Access MDB を.net アプリケーションから新規作成する

どうでもいいことですがはてなダイアリーに移行しました。
正直、wordpressは面倒でした。笑


さて、これは学校ネタでございますが。

Access のデータベースを新規で作りたいとき、いつもの適当思考で
 どーせ(0バイトの)空ファイルにOleDBConnection と OleDBCommand を使って CREATE TABLE でも発行したらできるんとちゃう?
とかって考えてたらそうは問屋が卸さない。

で、ちゃんと調べました。
参考: http://data.arrow.jp/009_csharptips/003_access-mdb-table.htm
C# のコードやけど読めるやろ?(自分基準w

手順としては、

  1. 参照設定から Microsoft ADO Ext. 2.8 for DDL and Security を追加。
  2. 同じく Microsoft ActiveX Data Objects 2.8 Library を追加。ADOのことですね。
  3. コードを書きます。

'新規作成します。
Dim cat As New ADOX.Catalog
'Engine Type = 4 が Access 97、5 = Access 2000 形式。
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & データベースファイル名 & ";Jet OLEDB:Engine Type= 5")
'閉じます。
Dim cn As ADODB.Connection = CType(cat.ActiveConnection, ADODB.Connection)
If Not cn Is Nothing Then cn.Close()
cat = Nothing

このコードの馬鹿らしいところは、わざわざ開きっぱなしのデータベースを閉じるがためだけにADOを呼んでくるということですね。
最初、閉じるコード(実行3〜4行目)がなくていきなり5行目を書いてたら、繰り返し実行時にファイルがロックされていると例外を吐かれました。

# どうせならOLEDBでできたらいいのに…。