如何从 MySQL db 获取表名的`List<string>`?

Mat*_*olf 4 c# mysql sql

如何获取List<string>MySQL 数据库中包含的所有表名?

我想将一个完整的数据库加载到 DataSet 中,但根据我的理解,MySqlDataAdapter.Fill() 似乎只对单个表进行操作,对吗?这就是我想要使用表字符串集合的目的。

编辑:

  1. 我寻找正确的查询:尽管数据库只包含 3 个表,但以下返回 59 个不同的项目:

        MySqlCommand command = new MySqlCommand("SELECT table_name FROM information_schema.tables where table_type = 'BASE TABLE'", connection);
        var result = command.ExecuteReader();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我寻找 C# 代码来将查询结果解析为List<string>.

Clo*_*ble 6

使用实体框架,将您的架构添加到 dbcontext 然后您可以进行如下操作:

var tableNames = context.MetadataWorkspace.GetItems(DataSpace.SSpace)
                        .Select(t => t.Name)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

编辑:

或者,您可以使用普通的 sql 查询(例如使用Show tables)读取 tablen 名称并将它们解析为如下列表:

List<String> Tablenames = new List<String>();

using(SqlConnection connection = new SqlConnection("conn_string"))
{
    string query = "show tables from YourDB";
    SqlCommand command = new SqlCommand(query, connection);
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            Tablenames.Add(reader.GetString(0));
        }         
    }
}
Run Code Online (Sandbox Code Playgroud)