我有一个连接字符串,我希望能够窥视例如“数据源”。 是否有解析器,或者我必须搜索字符串?
当前回答
我不太喜欢这里所有的答案。这就是我的发现。
使用。net Core
你可以直接使用内置的DbConnectionStringBuilder:
var builder = new System.Data.Common.DbConnectionStringBuilder();
builder.ConnectionString = "server=localhost;login=sa;pass=awesomeness";
var server = builder["server"];
var login = builder["login"];
var pass = builder["pass"];
其他回答
是的,有system。data。common。dbconnectionstringbuilder类。
DbConnectionStringBuilder类 类的基类 强类型的连接字符串 建筑商(SqlConnectionStringBuilder OleDbConnectionStringBuilder,等等 )获得。连接字符串 构建者让开发人员 以编程方式创建语法 正确连接字符串,并进行解析 并重建现有连接 字符串。
感兴趣的子类是:
System.Data.EntityClient.EntityConnectionStringBuilder
System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.OracleClient.OracleConnectionStringBuilder
System.Data.SqlClient.SqlConnectionStringBuilder
例如,要从SQL-server连接字符串中“窥视数据源”,你可以这样做:
var builder = new SqlConnectionStringBuilder(connectionString);
var dataSource = builder.DataSource;
你可以使用DbConnectionStringBuilder,你不需要任何特定的提供程序:
以下代码:
var cnstr = "Data Source=data source value;Server=ServerValue";
var builder = new DbConnectionStringBuilder();
builder.ConnectionString = cnstr;
Console.WriteLine("Data Source: {0}", builder["Data Source"]);
Console.WriteLine("Server: {0}", builder["Server"]);
输出到控制台:
Data Source: data source value
Server: ServerValue
编辑:
因为DbConnectionStringBuilder实现了dicictionary,你可以枚举连接字符串参数:
foreach (KeyValuePair<string, object> kv in builder)
{
Console.WriteLine("{0}: {1}", kv.Key, kv.Value);
}
是的,你可以使用ConnectionStringBuilder类做到这一点。 下面是用于标准数据提供者的可用DbConnectionStringBuilder实现的列表:
System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.OracleClient.OracleConnectionStringBuilder
System.Data.SqlClient.SqlConnectionStringBuilder
下面是解析连接字符串并显示其元素的示例。
string conString = @"Data Source=.\sqlexpress;" +
"Database=Northwind;Integrated Security=SSPI;" +
"Min Pool Size=5;Max Pool Size=15;Connection Reset=True;" +
"Connection Lifetime=600;";
// Parse the SQL Server connection string and display it's properties
SqlConnectionStringBuilder objSB1 = new SqlConnectionStringBuilder(conString);
Response.Write("<b>Parsed SQL Connection String Parameters:</b>");
Response.Write(" <br/> Database Source = " + objSB1.DataSource);
Response.Write(" <br/> Database = " + objSB1.InitialCatalog);
Response.Write(" <br/> Use Integrated Security = " + objSB1.IntegratedSecurity);
Response.Write(" <br/> Min Pool Size = " + objSB1.MinPoolSize);
Response.Write(" <br/> Max Pool Size = " + objSB1.MaxPoolSize);
Response.Write(" <br/> Lifetime = " + objSB1.LoadBalanceTimeout);
使用SqlConnectionStringBuilder 不幸的是,由于连接字符串不同,您将不得不使用特定于DB的ConnectionStringBuilder。
你想要使用DbProviderFactory。CreateConnectionStringBuilder(),它为您提供特定于连接器的连接字符串构建器/解析器,但不要求您使用任何特定于连接器的类。
推荐文章
- 在什么情况下SqlConnection会自动被征召到环境事务范围事务中?
- 用c#解析JSON
- Windows窗体中的标签的换行
- 为什么在c#中使用finally ?
- 为什么不是字符串。空一个常数?
- 为什么我不能在c#中有抽象静态方法?
- Nuget连接尝试失败“无法为源加载服务索引”
- net HttpClient。如何POST字符串值?
- 我如何使一个方法的返回类型泛型?
- 何时处理CancellationTokenSource?
- 如何获取正在执行的程序集版本?
- AutoMapper vs valueinjector
- 为什么控制台不。Writeline,控制台。在Visual Studio Express中编写工作?
- 什么是.NET程序集?
- 字符串不能识别为有效的日期时间“格式dd/MM/yyyy”