【问题标题】:Changing connection string in existing application更改现有应用程序中的连接字符串
【发布时间】:2014-02-26 22:16:05
【问题描述】:

好的,我正在使用一个旧的旧应用程序,该应用程序已从 Visual Studios 2008 转换为 Visual Studios 2010。

我负责对这个现有应用程序的代码进行小幅更新。 我做了更正,一切正常,应用程序完全按照它应该做的,除了这个应用程序必须从 Sql Server 作业运行。但每次我使用作业活动监视器从 Sql Server 2008 运行作业时,作业都会失败并出现以下错误。

DTSRun:  Loading...      Error:  -2147467259 (80004005); Provider Error:  17 (11)      Error string:  [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.      Error source:  Microsoft OLE DB Provider for SQL Server

我的印象是这个问题与这个旧程序执行其连接字符串的方式有关。

以下是旧连接字符串的示例(尽管出于安全原因,我更改了一些元素,例如服务器名称等)

       <applicationSettings>
    <TXExportNet.My.MySettings>
        <setting name="ConnString" serializeAs="String">
            <value>Data Source=SerSql;Initial Catalog=Xray;User ID=XUSERX;Password= xxxxxxxxxx</value>

这看起来是一种非常古老的连接字符串方法,所以我想更新为更常规的连接字符串方法,希望能纠正问题。

所以我注释掉了旧的连接字符串,并在 App.config 文件中添加了以下内容。

    <connectionStrings>
<add name="TXConnString" connectionString="Data Source=SerSql.CXXX.INT;Initial Catalog=Xray;User ID=XUSERX; Password=xxxxxxxxxx"  providerName="System.Data.OleDb"/>

我当然浏览了程序代码并将所有旧的“ConnString”引用更改为新的“TXConnString”

但是,当我运行程序的调试时,出现以下错误。

    The settings property 'TXConnString' was not found.

我显然做错了什么,但除了恢复到以前的版本之外,我不确定如何纠正这个问题。

任何关于可能导致问题的见解或建议都会很棒。

【问题讨论】:

    标签: vb.net visual-studio-2010 sql-server-2008 connection-string


    【解决方案1】:

    如果您使用的是 connectionStrings 标记而不是 applicationSettings 标记,您访问连接字符串的方式会有所不同。使用 ConfigurationManager 检索您的连接字符串。

    来自 app.config 文件

    <connectionStrings>
        <add name="TXConnString" connectionString="Data Source=SerSql.CXXX.INT;Initial Catalog=Xray;User ID=XUSERX; Password=xxxxxxxxxx"  providerName="System.Data.OleDb"/>  
    </connecectionStrings>
    

    在您的源代码中:

    using System.Configuration;
    
    string connectionString = ConfigurationManager.ConnectionStrings["TXConnString"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(connectionString))
    {  
       ... insert database code here ....
    }
    

    【讨论】:

    • 好的,所以应该替换我的部分 Data Source=SerSql;Initial Catalog=Xray ;用户ID=XUSERX;密码= xxxxxxxxxx
    • 还是应该将该行放在主类引用连接字符串的每个地方?
    • 在你的类引用连接字符串的地方替换它。
    • 更多我的意思是我可以在我的 App.config 中将 的部分替换为这段代码,但它是字符串 ConnString = ConfigurationManager.ConnectionString["TXConnString"].ConnectionString;并且能够保留代码中已经指向“ConnString”的所有位置吗?
    • 我更改了答案以显示配置文件和源代码文件中应该包含的内容(使用 C#)。在 app.config 中,您可以删除 因为您有新的 部分。然后在您的源代码中,您从配置文件中读取并将连接字符串存储在您之前的代码使用的任何变量中。在我的示例中,我调用了变量 connectionString。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多