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

(コメントから)これらの2つの接続文字列で2つの異なるデータベースファイルをターゲットにしていることがわかります。1つ目はApp_Dataプロジェクトのフォルダーにあり、2つ目はデスクトップにあります。

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

そうしてもいいよ

<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

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

お役に立てれば。

于 2016-07-05T02:05:00.460 に答える