Я могу получить название всех таблиц базы данных SQL Server в приложении C#?

Пакет pROC включает функцию coords для вычисления наилучшего порога:

library(pROC)
my_roc <- roc(my_response, my_predictor)
coords(my_roc, "best", ret = "threshold")
30
задан abatishchev 9 June 2010 в 11:01
поделиться

7 ответов

Это очень просто:

DataTable t = _conn.GetSchema("Tables");

где _conn - это объект SqlConnection, который уже был подключен к правильной базе данных.

56
ответ дан 27 November 2019 в 23:02
поделиться

Просто еще одно решение:

 public IList<string> ListTables()
    {
        List<string> tables = new List<string>();
        DataTable dt = _connection.GetSchema("Tables");
        foreach (DataRow row in dt.Rows)
        {
            string tablename = (string)row[2];
            tables.Add(tablename);
        }
        return tables;
    }
26
ответ дан yonexbat 27 November 2019 в 23:02
поделиться

Я использую это ExtensionMethod для SqlConnection:

public static List<string> GetTableNames(this SqlConnection connection)
{
    using(SqlConnection conn = connection)
    {
        if(conn.State == ConnectionState.Open)
        {
            return conn.GetSchema("Tables").AsEnumerable().Select(s => s[2].ToString()).ToList();
        }            
    }
    //Add some error-handling instead !
    return new List<string>();        
}
4
ответ дан Felix D. 27 November 2019 в 23:02
поделиться

Моя версия ответа yonexbat

public System.Collections.Generic.Dictionary<string, string> GetAllTables(System.Data.SqlClient.SqlConnection _connection)
{
    if (_connection.State == System.Data.ConnectionState.Closed)
        _connection.Open();
    System.Data.DataTable dt = _connection.GetSchema("Tables");
    System.Collections.Generic.Dictionary<string, string> tables = new System.Collections.Generic.Dictionary<string, string>();
    foreach (System.Data.DataRow row in dt.Rows)
    {
        if (row[3].ToString().Equals("BASE TABLE", StringComparison.OrdinalIgnoreCase)) //ignore views
        {
            string tableName = row[2].ToString();
            string schema = row[1].ToString();
            tables.Add(tableName, schema);
        }
    }
    _connection.Close();
    return tables;
}
2
ответ дан irfandar 27 November 2019 в 23:02
поделиться

Запустите команду sql для:

SELECT name FROM sysobjects WHERE xtype = 'U'
8
ответ дан 27 November 2019 в 23:02
поделиться

Если вы хотите получить все имена таблиц из базы данных, вы можете сделать что-то вроде этого:

string[] GetAllTables(SqlConnection connection)
{
  List<string> result = new List<string>();
  SqlCommand cmd = new SqlCommand("SELECT name FROM sys.Tables", connection);
  System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();
  while(reader.Read())
   result.Add(reader["name"].ToString());
  return result.ToArray();
}

Получить все базы данных с помощью другого ответа и создать соединение с каждой из них и использовать функцию «GetAllTables» чтобы получить все имена таблиц из этой базы данных.

5
ответ дан 27 November 2019 в 23:02
поделиться

См. Как получить список баз данных SQL Server одним способом:

System.Data.SqlClient.SqlConnection SqlCon = new System.Data.SqlClient.SqlConnection("server=192.168.0.1;uid=sa;pwd=1234");
SqlCon.Open();

System.Data.SqlClient.SqlCommand SqlCom = new System.Data.SqlClient.SqlCommand();
SqlCom.Connection = SqlCon;
SqlCom.CommandType = CommandType.StoredProcedure;
SqlCom.CommandText = "sp_databases";

System.Data.SqlClient.SqlDataReader SqlDR;
SqlDR = SqlCom.ExecuteReader();

while(SqlDR.Read())
{
MessageBox.Show(SqlDR.GetString(0));
}
3
ответ дан 27 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: