温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c# - How can I display all my sql tables in a ListBox
c# mysql sql

c# - 如何在列表框中显示所有SQL表

发布于 2020-03-27 12:01:41

我正在尝试从数据库中接收信息。我需要列出所有表名。我想我离执行还差得远。我正在尝试此操作但无法正常工作.sql是我的连接字符串

private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{ 
    listBox1.Text= (SQLConnection.sql = "SELECT* FROM INFORMATION_SCHEMA.TABLES");
}

查看更多

查看更多

提问者
user11612444
被浏览
164
Zalhera 2019-07-03 23:59

如果已定义DbContext来访问数据库,则可以执行以下操作。(假设您正在使用 Entity framework )。

using(var ctx = new YourDbContex())
{
   var tableNames = ctx.Database.SqlQuery<string>("SELECT t.TABLE_NAME FROM INFORMATION_SCHEMA.TABLES as t WHERE t.TABLE_TYPE = 'BASE TABLE' AND t.TABLE_SCHEMA = 'yourDatabase'").ToList() ;  
   listBox1.Text = String.Join(", ", tableNames);  
}

此SqlQuery将为您提供在'yourDatabase'中定义的所有表,并将Text设置为“ table1,table2,...”

如果您不想使用DbContext访问数据库,则可以使用SqlCommandClass进行。使用sql作为您的连接字符串。

var command = sql.CreateCommand() ;
command.CommandText = "SELECT t.TABLE_NAME FROM INFORMATION_SCHEMA.TABLES as t WHERE t.TABLE_TYPE = 'BASE TABLE' AND t.TABLE_SCHEMA = 'yourDatabaseName'";  
List<string> tableNames = new List<string>() ;

sql.Open() ;

using(var reader = command.ExecuteReader())
{
  while(reader.Read())
  {
    tableNames.Add(reader.GetString(0)) ;
  }
}

sql.Close();

listBox1.Text = String.Join(", ", tableNames) ;