C# App.Config连接字符串

C# App.Config连接字符串,c#,winforms,database-connection,connection-string,C#,Winforms,Database Connection,Connection String,在我的windows窗体中,app.config中的连接字符串为 <configuration> <configSections> </configSections> <connectionStrings> <add name="Database" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|D

在我的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连接字符串正常工作。

它(从注释中)确认您的目标是这两个连接字符串中的两个不同的数据库文件。第一个位于项目的
App\u Data
文件夹中,第二个位于桌面上

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

这是因为您已将数据库文件的
复制到输出目录
属性设置为
始终复制

您可以这样做

<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”]

您需要设置DataDirectory

然后,您可以在Global.ascx.cs中的应用程序_Start中设置路径

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


希望这有帮助。

你说的“但它没有连接到数据库”是什么意思?如何创建数据库连接?请将代码放在与数据库连接的位置。请查看编辑。您的两个连接字符串不同:一个是
数据源=| DataDirectory | \ database.accdb
,另一个是
数据源=C:\\Users\\Amrit\\Desktop\\database.accdb
。为什么你希望两者都能起作用?只需在配置中使用“工作”一个连接字符串=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Users\Amrit\Desktop\Database.accdb”
,它应该可以正常工作。我不会同时使用这两个连接字符串。我想使用app.config的连接字符串,因为该应用程序将安装在各种系统中。当我开始使用该应用程序时,我使用了桌面上的数据库,但现在我想使用应用程序文件夹中的数据库,以便创建可安装的安装文件。@AmritSharma,您说过app.config中的连接字符串连接到数据库,但DEO没有将其插入数据库。你查了哪个文件?你打开了
App\u Data
文件夹中的文件了吗?我刚刚意识到,应用程序可以从数据库中检索数据,但不能写入。数据库位于项目文件夹的根目录中。我怎样才能解决这个问题你说的“不会写”是什么意思?请具体说明发生了什么。命令不可能成功执行(没有错误),但什么也没有发生。在我的应用程序中,有一个combox,它从数据库中填充它的项。它可以很容易地填充数据库。此外,我在应用程序中具有搜索功能,它还可以搜索我要求它搜索的内容。但当我尝试添加用户和产品时,它不会这样做,但不会出现错误。但当我对桌面上的数据库做同样的操作时,它就很好了。我认为问题可能出在项目文件夹的只读属性上。为什么不使用内置的连接字符串功能?取决于使用的
.NET
框架。。此答案针对.net2及以上版本,但在.NET3.5及以上版本中阅读此问题;正在使用的版本清楚地说明了这一点。如果没有,程序就不会编译,你同意吗?是的,对。。但我认为它是关于配置文件的可读性的,两者都可以工作,很好