如何获取MySQL数据库中包含的所有表名的List<string>
?
我想将一个完整的数据库加载到DataSet中但是根据我的理解,似乎MySqlDataAdapter.Fill()只对单个表进行操作,对吗?这就是我想要使用表字符串集合的内容。
编辑:
我寻找正确的查询:尽管数据库只保存了3个表,但以下内容会返回59个不同的项目:
MySqlCommand command = new MySqlCommand("SELECT table_name FROM information_schema.tables where table_type = 'BASE TABLE'", connection);
var result = command.ExecuteReader();
我查找C#代码以将查询结果解析为List<string>
。
答案 0 :(得分:4)
使用Entity fraemwork,将您的架构添加到dbcontext,然后您可以创建类似:
var tableNames = context.MetadataWorkspace.GetItems(DataSpace.SSpace)
.Select(t => t.Name)
.ToList();
编辑:
另外,您可以使用普通的sql查询读取tablen名称(例如使用Show tables)并将其解析为如下列表:
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));
}
}
}
答案 1 :(得分:2)
首先下载并安装Connector/Net。这在C#中使用MySQL是必要的。MySQL for Visual Studio不是必需的,但我建议您安装它。它可以帮助您设计MySQL数据库Visual Studio。
添加对MySql.Data
在代码中添加using MySql.Data.MySqlClient;
。
声明一个这样的函数:
public List<string> MySqlCollectionQuery(MySqlConnection connection, string cmd)
{
List<string> QueryResult = new List<string>();
MySqlCommand cmdName = new MySqlCommand(cmd, connection);
MySqlDataReader reader = cmdName.ExecuteReader();
while (reader.Read())
{
QueryResult.Add(reader.GetString(0));
}
reader.Close();
return QueryResult;
}
然后创建一个MySql连接并调用此函数:
string connStr = string.Format("user={0};password={1};database={2}",
username,password,database);
List<string>TableNames = new List<string>();//Stores table names in List<string> form
using(MySqlConnection Conn = new MySqlConnection(connStr))
{
Conn.Open();
string cmdStr = "show tables";
TableNames = MySqlCollectionQuery(Conn,cmdStr);
}
我没有把它放在try ... catch
块中,但这样做总是一个好习惯。