在.Net中是否有一个类在.Net中,您可以获取数据库名称,以及所有连接字符串信息,而无需在连接字符串上执行子字符串?
编辑:
我没有创建连接我试图从连接字符串中获取信息。所以我基本上寻找一些带有连接字符串arg并且具有dbName,连接类型等的访问器的东西....
答案 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,对于不同的数据库,它将有所不同),在这种情况下,可以轻松地从中检索信息。
在这里解释说:
答案 5 :(得分:-3)
SqlConnection sq = new SqlConnection(ConnectionString);
完成“使用”声明(来自MSDN)
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}