【问题标题】:App.Config Connection StringApp.Config 连接字符串
【发布时间】:2013-02-01 20:34:19
【问题描述】:

在我的 Windows 窗体中,我在 app.config 中有连接字符串

<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="Database"
            connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database.accdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

在所有类中,我都使用以下代码连接到数据库。

string connString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;

但它没有连接到数据库。

谁能指出错误。

但是当我在不使用 app.config 的情况下使用此代码时,它可以正常工作。

   string connString  = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = C:\\Users\\Amrit\\Desktop\\Database.accdb; Persist Security Info = False;";

我怎样才能使 app.config 连接字符串工作..

【问题讨论】:

  • “但它没有连接到数据库”是什么意思?如何创建数据库连接?
  • 请将您的代码放在与数据库建立连接的位置。
  • 请查看编辑。
  • 您的两个连接字符串不同:一个有Data Source=|DataDirectory|\Database.accdb,另一个有Data Source=C:\\Users\\Amrit\\Desktop\\Database.accdb。为什么你希望两者都能工作?只需在配置中使用“工作”一个connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Amrit\Desktop\Database.accdb",它应该可以正常工作。
  • 我没有同时使用两个连接字符串。我想使用 app.config 的连接字符串,因为此应用程序将安装在各种系统中。

标签: c# winforms database-connection connection-string


【解决方案1】:

您需要设置 DataDirectory。

然后您可以在 Global.ascx.cs 中的 Application_Start 中设置路径

AppDomain.CurrentDomain.SetData("DataDirectory", "C:\Users\Amrit\Desktop");

https://stackoverflow.com/a/1409378/2745294

https://stackoverflow.com/a/6708279/2745294

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    它接缝(来自 cmets)您在这两个连接字符串中定位两个不同的数据库文件。第一个位于项目的App_Data 文件夹中,第二个位于您的桌面上。

    每次在 VS 中启动项目时,App_Data 文件夹中的文件都会复制到输出文件夹(bin/Debugbin/Release 用于 WinForms 项目)。它会覆盖文件的先前内容,因此每次您从输出文件夹中的App_Data 文件夹中获得文件的新副本时。要找出答案,请运行程序并执行一些插入操作。然后关闭程序并打开输出文件夹中的数据库文件(不是项目App_Data)。

    发生这种情况是因为您已将数据库文件的Copy to Output Directory 属性设置为Copy always

    【讨论】:

    • 当我开始使用应用程序时,我在桌面上使用了数据库,但现在我想使用应用程序文件夹中的数据库,以便我可以创建可安装的安装文件。
    • @AmritSharma 好吧,您说 app.config 中的连接字符串连接到数据库,但 deos 没有将其插入数据库。你查的是哪个文件?您是否打开了App_Data 文件夹中的文件?
    • 我刚刚意识到,应用程序能够从数据库中检索数据但无法写入。该数据库位于项目文件夹的根目录中。我该如何解决这个问题
    • “不会写”是什么意思?请具体并准确解释发生了什么。该命令不可能成功执行(没有错误)但 什么都没有发生
    • 在我的应用程序中,有一个组合框从数据库中填充其项目。它很容易填充数据库。我在应用程序中也有搜索功能,它也可以搜索我要求它搜索的内容。但是当我尝试添加用户并添加产品时,它不会这样做,但没有错误。但是,当我对桌面中的数据库执行相同操作时,它就可以了。我认为问题可能出在项目文件夹的只读属性上。
    【解决方案3】:

    你可以这样做

    <configuration>
     <appSettings>
       <add key="ApplicationTitle" value="Sample Console Application" />
       <add key="ConnectionString"
           value="Server=localhost;Database=Northwind;Integrated
                  Security=false;User Id=sa;Password=;" />
    </appSettings>
    

    然后使用ConfigurationSettings.AppSettings["ConnectionString"];

    【讨论】:

    • 为什么不使用内置的连接字符串功能?
    • 取决于使用的.NET 框架.. 此答案针对.net2 及更高版本,但 在.net 3.5 及更高版本中
    • 阅读问题;正在使用的版本显然有它。如果不编译,程序就无法编译,你同意吗?
    • 是的,对..但我认为它关于配置文件的可读性都可以工作,很好
    猜你喜欢
    • 2023-04-04
    • 2013-03-04
    • 2018-01-06
    • 2023-04-04
    • 2016-02-10
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多