如何用C#的foreach循环遍历SQL Server数据库所有表并显示在listBox1
C# 动态遍历数据库表并显示在ListBox中
由于数据库表会动态新增或删除,必须直接从数据库元数据中实时获取表名,不能依赖本地缓存列表。以下针对常见数据库(SQL Server、MySQL)提供示例代码,优先使用foreach循环实现:
针对SQL Server的实现
使用SqlConnection的GetSchema方法获取数据库表元数据,遍历后将表名添加到listBox1:
using System.Data; using System.Data.SqlClient; using System.Windows.Forms; public void LoadSqlServerTablesToListBox() { // 替换为你的SQL Server连接字符串 string connectionString = "Server=YOUR_SERVER;Database=YOUR_DB;User Id=YOUR_USER;Password=YOUR_PWD;"; listBox1.Items.Clear(); // 清空现有内容 using (SqlConnection conn = new SqlConnection(connectionString)) { try { conn.Open(); // 获取所有用户表(排除系统表) DataTable tables = conn.GetSchema("Tables", new[] { null, null, null, "BASE TABLE" }); // 使用foreach循环遍历表名 foreach (DataRow row in tables.Rows) { string tableName = row["TABLE_NAME"].ToString(); listBox1.Items.Add(tableName); } } catch (Exception ex) { MessageBox.Show($"加载表失败: {ex.Message}"); } } }
针对MySQL的实现
使用MySqlConnection(需先安装MySql.Data NuGet包),通过查询系统表获取用户表名:
using System.Data; using MySql.Data.MySqlClient; using System.Windows.Forms; public void LoadMySqlTablesToListBox() { // 替换为你的MySQL连接字符串 string connectionString = "Server=YOUR_SERVER;Database=YOUR_DB;Uid=YOUR_USER;Pwd=YOUR_PWD;"; listBox1.Items.Clear(); using (MySqlConnection conn = new MySqlConnection(connectionString)) { try { conn.Open(); // 查询information_schema获取当前数据库的用户表 string query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = @dbName AND TABLE_TYPE = 'BASE TABLE'"; using (MySqlCommand cmd = new MySqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@dbName", conn.Database); using (MySqlDataReader reader = cmd.ExecuteReader()) { // 遍历读取结果 while (reader.Read()) { string tableName = reader["TABLE_NAME"].ToString(); listBox1.Items.Add(tableName); } } } } catch (Exception ex) { MessageBox.Show($"加载表失败: {ex.Message}"); } } }
关键注意事项
- 确保连接字符串中的服务器地址、数据库名、账号密码配置正确;
- 数据库操作必须添加异常处理,避免程序因连接失败、权限不足等问题崩溃;
- 若需要实时同步表列表,可结合
Timer控件定期调用上述方法; - 此代码适用于合法业务场景,并非用于盗版影视相关软件开发。
内容的提问来源于stack exchange,提问作者Piotr Ruda
相关产品推荐
相关产品推荐

