You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:46:05