winforms 应用程序配置连接字符串

wvyml7n5  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(140)

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

xqkwcwgp

xqkwcwgp1#

你可以这样做

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

mwngjboj

mwngjboj2#

从注解中可以看出,您在这两个连接字符串中定位了两个不同的数据库文件,第一个位于项目的App_Data文件夹中,第二个位于桌面上。
App_Data文件夹中的文件将复制到输出文件夹中(bin/Debugbin/Release对于WinForms项目)。它会覆盖文件的先前内容,因此每次您在输出文件夹中的App_Data文件夹中有一个新的文件副本时。运行程序并执行一些插入操作。然后关闭程序并在输出文件夹中打开数据库文件(不在项目App_Data中)。
发生这种情况是因为您将数据库文件的Copy to Output Directory属性设置为Copy always

ipakzgxi

ipakzgxi3#

您需要设置数据目录。
然后可以在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
希望这个有用。

相关问题