如何在Code Behind中设置DB ConnectionStringSettings
本文关键字:设置 DB ConnectionStringSettings Behind Code | 更新日期: 2023-09-27 18:21:51
Studio 2010 C#应用程序访问LUW数据库。我在代码隐藏文件中而不是使用web.config构建DB连接设置时收到错误。我们有一个第三方产品,用于存储和检索密码。
旧的web.config文件方法当前建立DB连接,如下所示:
在web.config文件中:
<add name="myDBConnect" connectionString="Database=mydbname;User
ID=myuserid;Password=abcxyz" providerName="IBM.Data.DB2"/>
在代码隐藏文件中,执行以下操作以打开数据库连接:
ConnectionStringSettings settings = WebConfigurationManager.ConnectionStrings["myDBConnect"];
ConnectionString = settings.ConnectionString;
ConnectionStringSettingsCollection settings = ConfigurationManager.ConnectionStrings;
if ((settings != null))
{
foreach (ConnectionStringSettings cs in settings)
{
returnValue = cs.ProviderName;
}
}
上面的逻辑运行良好,但我现在正试图在从我们的第三方产品中检索到适当的密码后动态构建连接字符串,如下所示:
(注:connPW是从第三方产品中检索到的密码)
ConnectionStringSettings settings = "Database=" + mydbname + ";User ID=" + myuserid + ";Password=" + connPW + " providerName=IBM.Data.DB2";
这行代码收到以下错误:"无法将类型'string'隐式转换为'System.Configuration.ConnectionStringSettings'
有人能建议我在定义设置时如何克服这个错误吗。感谢
您不需要ConnectionStringSettings
;您应该直接连接到字符串。
您还应该使用DbConnectionStringBuilder
修复程序来修复代码中的注入漏洞。
这会给您带来错误,因为您将String对象设置为ConnectionStringSettings对象。如果您想使用ConnectionStringSettings
,您只需要使用ConnectionStringSettings(string name, string connectionString, string providerName)
构造函数。
ConnectionStringSettings settings = new ConnectionStringSettings("name", "Database=" + mydbname + ";User ID=" + myuserid + ";Password=" + connPW, "IBM.Data.DB2");
试试这个。。。
ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString = "your connection string";
如果您执行上述代码,系统将抛出错误"配置为只读",因为配置为只读
我们可以用这种方法
var settings = ConfigurationManager.ConnectionStrings["ConnectionStringName"];
var Reset = typeof(ConfigurationElement).GetField(
"_bReadOnly",
BindingFlags.Instance | BindingFlags.NonPublic);
Reset .SetValue(settings, false);
settings.ConnectionString = "Data Source=Something";