2

Studio 2010 C# 应用程序访问 LUW DB。在代码隐藏文件中而不是使用 web.config 构建我的 DB Conncetion 设置时,我收到一个错误。我们有一个存储和检索密码的第三方产品。

旧的 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.ConnctionStringSettings'

有人可以建议我在定义设置时如何克服这个错误。谢谢

4

3 回答 3

3

你不需要ConnectionStringSettings; 您应该直接连接到字符串。

您还应该使用DbConnectionStringBuilderfix 修复代码中的注入漏洞。

于 2013-07-09T15:11:28.897 回答
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");
于 2013-07-09T15:17:53.230 回答
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";
于 2014-11-24T07:36:13.930 回答