数据库连接字符串信息

时间:2009-04-01 17:22:46

标签: c#

在.Net中是否有一个类在.Net中,您可以获取数据库名称,以及所有连接字符串信息,而无需在连接字符串上执行子字符串?

编辑:

我没有创建连接我试图从连接字符串中获取信息。所以我基本上寻找一些带有连接字符串arg并且具有dbName,连接类型等的访问器的东西....

6 个答案:

答案 0 :(得分:25)

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

鉴于

string connectionString = "Data Source = .\\SQLEXPRESS;Database=Northwind;Integrated Security=True;";

你可以......

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

builder.ConnectionString = connectionString;

string server = builder["Data Source"] as string;
string database = builder["Database"] as string;

或者

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

builder.ConnectionString = connectionString;

string server = builder.DataSource;
string database = builder.InitialCatalog;

答案 1 :(得分:3)

使用连接字符串初始化连接后,可以从初始化连接对象的属性中获取这些信息。

检查System.Data.Common.DbConnection。

答案 2 :(得分:0)

是的ConnectionInfo

http://msdn.microsoft.com/en-us/library/ms226340(VS.80).aspx

编辑:我和Chris一起意识到这只有在导入Crystal Reports命名空间的情况下才有效。否则我不确定

答案 3 :(得分:0)

ConnectionInfo connectionInfo = new ConnectionInfo ();
connectionInfo = logOnInfo.ConnectionInfo;

connectionInfo.DatabaseName = database;
connectionInfo.ServerName = server;
connectionInfo.Password = password;
connectionInfo.UserID = user;

编辑:看起来Nathan打败了我,因为我来自同一页。

再次编辑:我应该注意ConnectionInfo位于CrystalDecisions.Shared命名空间中。至于如何从通用数据库连接中获取它,我不确定。

答案 4 :(得分:0)

如果使用“连接字符串”构建器构建连接字符串(例如,OracleConnectionStringBuilde,对于不同的数据库,它将有所不同),在这种情况下,可以轻松地从中检索信息。

在这里解释说:

http://msdn.microsoft.com/en-us/library/ms254947.aspx

答案 5 :(得分:-3)

SqlConnection sq = new SqlConnection(ConnectionString);

Reference

完成“使用”声明(来自MSDN)

using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Do work here; connection closed on following line.
    }