C#でデータベースにAccessのMDBを使用する

C#から、Accessのがインストールされていない環境で、MDBファイルを使用する方法のメモ。
まずは、参照設定でMicrosoft ADO Ext X.X for DDL and Securityを追加します。

 

1.MDBファイルを作成する

※接続文字列は、以降の内容でも共通です。

64Bit環境で使用する場合、”Provider=Microsoft.ACE.OLEDB.12.0;”に変更する必要がある。
ただし、Accessがインストールされていない場合は、
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント
などの、追加モジュールが必要になるとの事。

ファイルが存在する場合などは、例外が発生するのでTryにて対応しよう。

 

2.テーブルを作成する

テーブルを作成するには、MDBファイルに接続し、テーブルを作成し、列を追加していく。列を追加する際に、細かなオプションを設定する場合と、とりあえず列を追加してしまう2パターン。既に存在するテーブルを作成すると例外が発生する。

もしくは、SQL文でテーブルを作成してまう方法もある。ポイントは、ADOX.Catalogではなく、System.Data.OleDb.OleDbConnectionを使用するのと、SQLと異なり、System.Data.SqlClient.SqlCommandではなく、System.Data.OleDb.OleDbCommand commandを使用する事です。
以降の項目で、説明しますが、SQLコマンドの実行は、SQLサーバに対する方法とほぼ同様です。

 

3.テーブルにデータを追加する

微妙に違う部分として、SqlDbTypeから、System.Data.OleDb.OleDbTypeに変更したり、Parameters.Addは非推奨でAddWithValueを使ったりしました。

 

4.テーブルからデータを取得する

こちらは、System.Data.SqlClient.SqlDataReaderから、System.Data.OleDb.OleDbDataReaderに変更しました。

AccessのMDBを使用する場合でも、SQLサーバーを使用する場合とほぼ同等ですが、一部クラス名や列挙体の指定が異なってしまうことが、残念です。簡単なデータなら、どちらのデータベースを使用するか選択できると、良かったのですが。