Как я могу отобразить все мои таблицы SQL в ListBox - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь получить информацию из моей БД. Мне нужно перечислить все имена моих таблиц. Я думаю, я совсем не близок к казни. Я пытаюсь с этим, но не работает, .sql моя строка подключения

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

1 Ответ

1 голос
/ 03 июля 2019

Если вы определили 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) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...