有没有任何类(或方法)可以创建格式化的连接字符串,给定提供者名称、用户id、密码等



Eg。

ConnectionDetails cd = new ConnectionDetails ();
cd.ProviderName = "System.Data.OleDb";
cd.DataSource = "serverAddress";
cd.Catalog = "database";
cd.UserId = "userId";
cd.Password = "password";
string connectionString = cs.CreateConnectionString();
// Should return:
// "Provider=SQLOLEDB;Data Source=serverAddress;Initial Catalog=database;User Id=userId;Password=password;"

我会编写自己的类,但我不知道如何通过编程从不变的数据库提供程序名称(System.Data.OleDb)中检索连接字符串提供程序属性(本例中为SQLOLEDB)。

编辑:

你可以做

DbProviderFactories.GetFactory("System.Data.OleDB").CreateConnectionStringBuilder()

但是返回的DBConnectionStringBuilder仍然不知道它的连接字符串提供程序属性,即使在这种情况下派生类具有"provider"属性。

我所知道的最接近的东西是DbConnectionStringBuilder。

由于不同的提供程序所需的属性各不相同,因此它使用关联数组(名称值集合),而不是固定属性。

所以你的例子看起来像

DbConnectionStringBuilder csb = new DbConnectionStringBuilder();
csb["ProviderName"] = "System.Data.OleDb";
csb["DataSource"] = "serverAddress";
csb["Catalog"] = "database";
csb["UserId"] = "userId";
csb["Password"] = "password";
string connectionString = csb.ConnectionString;

有一个OleDbConnectionStringBuilder类将为您创建连接字符串。

但听起来你正试图让它为你生成提供者名称,我不认为它真的是这样。由于提供程序名称可能会有所不同,因此您必须提供该名称来告诉连接该做什么。无论您使用什么机制来选择数据库连接(或者如果您要使用该机制来驱动数据库连接工厂方法),它都必须提供提供程序名称。

最新更新