1

.SDFSQL Server Compactデータベースを使用してデータを格納する Winforms アプリケーションがあります。アプリケーションはデバッグ時に Visual Studio で正常に動作しますが、プロジェクトの [公開] オプションを使用してインストール後にプログラムを実行すると、常に「データベース ファイルが見つかりません」というエラーが表示されます。

接続文字列を次のように設定します

string fileName = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Cellar.sdf");
connString = string.Format("Data Source={0};", fileName);

データベースCellar.sdfは私のプログラムフォルダー内にあります。

ここに画像の説明を入力

データベースへのパスが間違っていることは明らかですが、「発行」機能を使用するときにアプリケーションをインストールするパスを設定する方法、またはデータベース ファイルの場所を見つける方法はありますかコピー?デスクトップ アプリケーションにローカル データベース ファイルを含めるには、どのような方法が適切ですか?

4

1 に答える 1

1

DataDirectory マクロを含めて、場所をコード内の適切な場所に設定できます。

connString = string.Format("Data Source=|DataDirectory|\{0};", fileName);

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        // This is our connection string: Data Source=|DataDirectory|\Chinook40.sdf
        // Set the data directory to the users %AppData% folder
        // So the Chinook40.sdf file must be placed in:  C:\\Users\\<Username>\\AppData\\Roaming\\
        AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
    }

これには、最初のアプリケーションの起動時にデータベース ファイルを目的の場所 (まだ存在しない場合) にコピーする必要があります。

于 2013-08-28T07:10:56.103 に答える