C#でADOXを使ったMDBファイルの作成
ちょっとMDBファイルをC#経由で使ってみようと思ったのですが、C#を使ったことがないのと、あまりDBを触ることがないので、インターネットなんかで調べながら、VBのサンプルなどを参考にしてテーブルを作る方法を模索してみました。
VBなんかのサンプルは多いんですが、C#って結構少なかったりするので、忘れないようにメモしておきます。
とりあえず、参照の追加により"ADOX"(Microsoft ADO Ext. 2.8 for DDL and Security)を追加しておくことが前提となります。
このサンプルを実行することで、とりあえず Id と Name を持ったテーブルが作成されるはずです。
また、Id については、AutoIncrementになります。
string DBSource = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\DB\\DB.MDB; Jet OLEDB:Engine Type=5";
try
{
// データソースの作成を行う
ADOX.CatalogClass catalog = new ADOX.CatalogClass();
catalog.Create(DBSource);
// テーブルを作成する(CUSTOMER)
ADOX.TableClass table = new ADOX.TableClass();
table.ParentCatalog = catalog;
table.Name = "TABLE1";
// レコードの作成その1(Id)
ADOX.ColumnClass columnId = new ADOX.ColumnClass();
columnId.ParentCatalog = catalog;
// -->ここでADOX.DataTypeEnum.adIntegerを設定しておかないと"AutoIncrement"の設定でエラーとなる
columnId.Type = ADOX.DataTypeEnum.adInteger;
columnId.Name = "Id";
columnId.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
columnId.Properties["AutoIncrement"].Value = true;
table.Columns.Append(columnId, ADOX.DataTypeEnum.adInteger, 0);
// レコードの作成その2(Name)
ADOX.ColumnClass columnName = new ADOX.ColumnClass();
columnName.ParentCatalog = catalog;
columnName.Name = "Name";
columnName.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
table.Columns.Append(columnName, ADOX.DataTypeEnum.adWChar, 64);
table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "Id", "", "");
catalog.Tables.Append(table);
}
catch (Exception dbex)
{
System.Diagnostics.Debug.WriteLine(dbex.ToString());
}
| 固定リンク
この記事へのコメントは終了しました。
コメント