1

例如。

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 仍然不知道它的连接字符串提供程序属性,即使在这种情况下它的派生类具有“提供程序”属性。

4

2 回答 2

2

我所知道的最接近的是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;
于 2008-10-10T15:40:31.813 回答
0

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

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

于 2008-10-10T21:17:22.803 回答