前回の記事「VB.NETからAccessファイルに接続する」の応用で、パスワードを設定したAccessファイルへの接続方法について説明する。
最近では、セキュリティ強化の観点からAccessファイルにパスワードを設定したいという要望もあるので、そういったファイルに接続する場合の方法を知っておくに越したことはない。

以下、サンプル。
《サンプルの環境》
 Accessファイル名:password.mdb
 設定するパスワード:password
 Accessファイルの保管場所:Dドライブ直下

※上記の情報(ファイル名、保管場所、パスワード)は、VB.NETのソースコードに指定するものと一致している必要がある。
 そのため、上記の情報は、各自の環境に合わせて読み替えること。

《Access》
1.Accessを起動する。
2.テーブルに"TestTable"を追加する。
 →項目名は何でも良い。
3.データを何件か登録する。
4.メニューバーの[ツール]-[セキュリティ]-[データベースパスワードの設定]を選択する。
5.パスワードを入力する。

《VB.NET》
Imports Microsoft.VisualBasic.ControlChars

Private Sub Main()
Dim cn As New System.Data.OleDb.OleDbConnection
Dim command As System.Data.OleDb.OleDbCommand
Dim reader As System.Data.OleDb.OleDbDataReader

'Accessファイルの保管場所
Dim FilePath As String = "D:\password.mdb"
'パスワード
Dim password As String = "password"

Try
'接続情報は毎回破棄するため、Persist Security Infoは、標準(False)とする
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Quote & FilePath & Quote & _
";Jet OLEDB:Database Password=" & password & ";"

command = cn.CreateCommand

command.CommandText = "SELECT * FROM TestTable"

cn.Open()

reader = command.ExecuteReader()
'読み込んだデータを表示
While reader.Read() = True
Debug.WriteLine(reader(0))
End While

cn.Close()
command.Dispose()
cn.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message, "エラー")
End Try
End Sub

※赤字部分がパスワード付きのAccessファイルに接続するために必要な処理として追加した命令となる。

【補足事項】
・接続文字列に"Jet OLEDB:Database Password=設定したパスワード"を追加するだけで良い。
・IDやパスワードは、プログラム上や設定ファイルに保存する場合、暗号化を施すこと。
 →暗号化を施さずに保存してしまうと、IDとパスワードを不正利用される恐れがある。
  (実行形式からの逆コンパイルによる解析や設定ファイルの盗み見等への対処)