如何使用SqlConnectionStringBuilder从连接字符串获取数据库名称

Imr*_*zvi 85 c# sql asp.net ado.net

我从不想使用字符串操作拆分连接字符串并获取服务器,数据库,uid和密码.

我阅读了以下链接并阅读了接受的答案,我发现这是从连接字符串中获取用户ID和密码的最佳方法,但是数据库名称呢?

从连接字符串获取用户名和密码的正确方法?

如何使用SqlConnectionStringBuilder从连接字符串获取数据库名称.(DataSource是服务器名称吗?)

Rom*_*ain 136

您可以使用特定于提供程序的ConnectionStringBuilder类(在相应的命名空间内),或者System.Data.Common.DbConnectionStringBuilder在需要时抽象连接字符串对象.您需要知道用于指定所需信息的特定于提供程序的关键字,但对于SQL Server示例,您可以执行以下两种操作之一:

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);

string server = builder.DataSource;
string database = builder.InitialCatalog;
Run Code Online (Sandbox Code Playgroud)

要么

System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();

builder.ConnectionString = connectionString;

string server = builder["Data Source"] as string;
string database = builder["Initial Catalog"] as string;
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,最后一行需要:`string database = builder ["Initial Catalog"] as string;` - "Database"是一个无效的关键字. (2认同)

una*_*ity 53

有关InitialCatalog属性,请参阅MSDN文档:

获取或设置与连接关联的数据库的名称...

此属性对应于连接字符串中的"初始目录"和"数据库"键...


naw*_*fal 30

更简单的替代方法是从连接对象本身获取信息.例如:

IDbConnection connection = new SqlConnection(connectionString);
var dbName = connection.Database;
Run Code Online (Sandbox Code Playgroud)

同样,您也可以从连接对象获取服务器名称.

DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;
Run Code Online (Sandbox Code Playgroud)


Kis*_*mar 11

string connectString = "Data Source=(local);" + "Integrated Security=true";

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);

Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);
Run Code Online (Sandbox Code Playgroud)


pva*_*896 7

这给了你Xact;

System.Data.SqlClient.SqlConnectionStringBuilder connBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();

connBuilder.ConnectionString = connectionString;

string server = connBuilder.DataSource;           //-> this gives you the Server name.
string database = connBuilder.InitialCatalog;     //-> this gives you the Db name.
Run Code Online (Sandbox Code Playgroud)


Den*_*nis 5

数据库名称是SqlConnectionStringBuilder.InitialCatalog属性的值。


Hab*_*bib 5

您可以使用InitialCatalog属性或builder["Database"]也可以。我用不同的情况对其进行了测试,它仍然有效。