C#连接到数据库并列出数据库

use*_*745 22 c# sql database ado.net sqlconnection

可能重复:
SQL Server查询以查找所有当前数据库名称

我试图弄清楚如何在连接到服务器之后列出数据库而不首先指定数据库.

sqlConnection1 = new SqlConnection("Server=" + sqlServer + ";Database=" + database +    
";User ID=" + userName + ";Password=" + password + ";Trusted_Connection=False;");
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要的是最终用户连接到sql server,然后有一个下拉列表,填充了他们可以连接和查询的db列表.

想法?

Tim*_*ter 42

你可以使用SqlConnection.GetSchema:

using(var con = new SqlConnection("Data Source=Yourserver; Integrated Security=True;"))
{
    con.Open();
    DataTable databases = con.GetSchema("Databases");
    foreach (DataRow database in databases.Rows)
    {
        String databaseName = database.Field<String>("database_name");
        short dbID = database.Field<short>("dbid");
        DateTime creationDate = database.Field<DateTime>("create_date");
    }
} 
Run Code Online (Sandbox Code Playgroud)

SQL Server架构集合(ADO.NET)

要确定支持的架构集合列表,请调用不带参数的GetSchema方法,或使用架构集合名称"MetaDataCollections".这将返回一个DataTable,其中包含受支持的架构集合的列表,它们各自支持的限制数量以及它们使用的标识符部分的数量.

  • 一个空的捕获不是主意,我只是指出你应该检查异常. (3认同)

tra*_*ter 5

您可以编写一个存储过程,它可以返回该服务器上的数据库列表.

SELECT name
FROM master.sys.databases
Run Code Online (Sandbox Code Playgroud)

要么

EXEC sp_databases
Run Code Online (Sandbox Code Playgroud)