2

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

4

3 回答 3

0

你可以这样做

<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"];

于 2013-02-17T07:54:23.170 回答
0

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

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

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

于 2013-02-17T07:49:44.593 回答
0

您需要设置数据目录。

然后,您可以在 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

希望这可以帮助。

于 2016-07-05T02:05:00.460 回答