我从不想使用字符串操作来拆分连接字符串并获取服务器,数据库,uid和密码。
我阅读了以下链接并阅读了接受的答案,我发现这是从连接字符串中获取用户名和密码的最佳方法,但是数据库名称呢?
如何使用SqlConnectionStringBuilder从连接字符串获取数据库名称。(数据源是服务器名称吗?)
我从不想使用字符串操作来拆分连接字符串并获取服务器,数据库,uid和密码。
我阅读了以下链接并阅读了接受的答案,我发现这是从连接字符串中获取用户名和密码的最佳方法,但是数据库名称呢?
如何使用SqlConnectionStringBuilder从连接字符串获取数据库名称。(数据源是服务器名称吗?)
Answers:
有关InitialCatalog属性,请参见MSDN文档:
获取或设置与连接关联的数据库的名称。
该属性对应于连接字符串中的“初始目录”和“数据库”键。
您可以使用提供程序特定的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;
要么
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;
一个更简单的替代方法是从连接对象本身获取信息。例如:
IDbConnection connection = new SqlConnection(connectionString);
var dbName = connection.Database;
同样,您也可以从连接对象获取服务器名称。
DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;
SqlConnection
。有没有类似的方法可以制作这种跨RDBMS?
IDbConnection
吗?
string connectString = "Data Source=(local);" + "Integrated Security=true";
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);
Console.WriteLine("builder.InitialCatalog = " + builder.InitialCatalog);
这为您提供了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.
数据库名称是SqlConnectionStringBuilder.InitialCatalog属性的值。
您可以使用InitialCatalog属性或也可以使用builder["Database"]
。我用不同的情况进行了测试,但仍然可以使用。
string database = builder["Initial Catalog"] as string;
-“数据库”是无效的关键字。