1

プロジェクトでMicrosoft Access データベースを使用しています。bin フォルダに保存されます。ファイル パスが変更されたときに、そのデータベースへの接続を確保するにはどうすればよいですか?

System.Data.OleDb パブリック クラス Form3 をインポートします。

Dim con As New OleDb.OleDbConnection

Dim da As OleDbDataAdapter

Dim ds As New DataSet

Dim str1 As String

    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AARVIII\Documents\DATABASE\MP1.accdb"
4

3 に答える 3

4

接続文字列は、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
は文書化されています

于 2013-08-01T14:40:59.983 に答える
1

はい、次を使用する必要があります。

con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "MP1.accdb"

そして、データベースファイルを.exeを起動するのと同じフォルダーに置きます...

于 2013-08-01T14:43:37.220 に答える
0

この単純なコードを使用すると、フォルダーをどこにでも移動できます

conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\myDatabase.mdb"

この接続文字列が機能するように、必ずアクセス ファイルを bin フォルダーに保存してください。

于 2016-08-27T15:19:47.677 に答える