在我的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连接字符串正常工作。。
你可以这样做
<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"];
(从注释中)可以看出,您针对的是这两个连接字符串中的两个差异数据库文件。第一个位于项目的App_Data
文件夹中,第二个位于桌面上。
每次在VS中启动项目时,App_Data
文件夹中的文件都会复制到输出文件夹中(对于WinForms项目,bin/Debug
或bin/Release
)。它会覆盖文件的以前内容,因此每次从输出文件夹中获得文件的新副本时,都会将App_Data
文件夹复制到该文件夹中。要找到答案,请运行该程序并执行一些插入操作。然后关闭程序并打开输出文件夹中的数据库文件(不在项目App_Data
中)。
发生这种情况是因为您已将数据库文件的Copy to Output Directory
属性设置为Copy always
。
您需要设置DataDirectory。
然后,您可以在Global.ascx.cs 的Application_Start中设置路径
AppDomain.CurrentDomain.SetData("DataDirectory", "C:UsersAmritDesktop");
https://stackoverflow.com/a/1409378/2745294
https://stackoverflow.com/a/6708279/2745294
希望这能有所帮助。