1

重複の可能性:
SQL Express 接続文字列 - アプリケーションの場所に相対的

vb.net で記述されたデスクトップ アプリケーションがあります。アプリは、SQL Server Express 2008 データベース (.mdf ファイル) を使用します。現在、次のような絶対パスとして接続文字列があります。

Dim ObjConnection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Pantheo\Documents\Visual Studio 2010\Projects\Food Manager 2012(new)\Food Manager 2012\Food_CustomerDB.mdf;Integrated Security=True;User Instance=True")

私のPCでは、うまく動作します。ただし、ビルドして.exeを別のPCで実行すると、データベースに接続できないためクラッシュします。

この接続文字列を使用して相対的にしようとしました:

 Dim ObjConnection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Food_CustomerDB.mdf;Initial Catalog=Food_CustomerDB;Integrated Security=True;User Instance=True")

成功しませんでした。誰かが私を助けることができますか?基本的にC#に関しては、他にもたくさんの答えがあることは知っていますが、それらを実装することはできません。前もって感謝します

4

1 に答える 1

1

値は、AppDomain.CurrentDomain プロパティ リストから抽出されたDataDirectory単なる文字列です。WinForm アプリケーションでは事前定義されていませんが、データベースを開く前に設定できます。

AppDomain.CurrentDomain.SetData("DataDirectory", @"C:\MyReadWriteFolder")

次に、そこにデータベースを配置すれば、接続文字列がAttachDbFilename=|DataDirectory|\Food_CustomerDB.mdf機能するはずです (C:\MyReadWriteFolder)。

于 2012-06-05T07:59:39.880 に答える