访问LUW DB的Studio 2010 C#应用程序。我在代码隐藏文件中构建我的数据库一致性设置而不是使用web.config时收到错误。我们有第三方产品,用于存储和检索密码。
旧的web.config文件方法当前建立数据库连接,如下所示:
在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.ConnctionStringSettings'
有人可以建议我在定义设置时如何解决此错误。感谢
答案 0 :(得分:3)
您不需要ConnectionStringSettings
;你应该直接连接到字符串。
您还应该使用DbConnectionStringBuilder
修复程序修复代码中的注入漏洞。
答案 1 :(得分:1)
它给你的错误是因为你设置的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");
答案 2 :(得分:1)
试试这个......
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";