1

私の Visual Basic プロジェクトでは、次の接続文字列を使用しています。

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Admin\Desktop\IzolacCold V2\IzolacCold V2\izolac_cold_dbv2.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

デバッグしてデバッグフォルダーに移動するか、「リリース」すると問題が発生します。exeファイルプログラムを実行すると正常に動作しますが、接続文字列で定義されたデータベースにデータを保存し、DEBUGフォルダー(またはRELESEフォルダー)に作成されたデータベースには保存しません。

データベースに正しく接続する方法。適切な接続文字列を作成するには?

4

1 に答える 1

2

DataDirectory置換文字列を使用する必要があります。

たとえば、接続文字列を次のように書くことができます

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\izolac_cold_dbv2.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

コードでは、接続を開こうとする前に、このコードを実行する DataDirectory の正確な場所を制御できます。

Dim commonDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim myAppDataFolder = Path.Combine(commonDataFolder, "MyAppName")
if Not Directory.Exists(myAppDataFolder) Directory.CreateDirectory(myAppDataFolder)
AppDomain.CurrentDomain.SetData("DataDirectory", myAppDataFolder)

(この例では C:\programdata\myAppName フォルダーを使用します。これは、アプリケーションが必要とする読み取り/書き込みデータ ファイルに最適な場所だからです。

展開手順では、上記のフォルダーを作成し、データベース ファイルをこの場所に配置するように注意する必要があります。

于 2013-07-06T19:15:34.957 に答える