接続文字列は、PC でのみ有効な固定位置にデータベースを配置します。
簡単な回避策は|DataDirectory|を使用することです。置換文字列。
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=|DataDirectory|\MP1.accdb"
このようにして、コードを使用してデータベースの場所を制御できます。
通常 (デスクトップ アプリケーションの場合) |DataDirectory| 置換文字列は、アプリケーションをインストールしたフォルダーと同じフォルダーを指しますが、そこに書き込む権限が必要であり、あらゆる種類のアクティブなデータベースにはそのファイルに対する書き込み権限が必要です。したがって、これはデータベース ファイルの最適な場所ではありません。
ただし、次のようなコードを使用して DataDirectory が指す場所を変更できます。(もちろん、データベースとの通信を試みる前に置いてください)
' Prepare a string pointing to a subfolder of the common application data
Dim appFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim dbFolder = Path.Combine(appFolder, "MyAppFolder")
' Create the folder if it doesn't exist.
Directory.CreateDirectory(dbFolder)
' Change the substitution string kept by DataDirectory
AppDomain.CurrentDomain.SetData("DataDirectory", dbFolder)
これで、データベースのターゲット ディレクトリは C:\programdata\myappfolder になり、アプリケーションには読み取り/書き込み権限が与えられます
DataDirectory の詳細
DataDirectoryはどこにありますか DataDirectory
は文書化されています