想要在程式中控制Access,不是資料,而是Access資料庫的表結構啊,欄位啊..就要用到ADOX
所以先要在解決方案中引用之,方法如下:
方案總管 --> 引用 --> (右鍵)添加引用 --> COM --> Microsoft ADO Ext. 2.8 for DDL and Security
注意:
當建立ACCESS資料庫的時候,會自動建立一個串連,為了釋放.ldb檔案,必須關閉這一串連。而這個串連是ADODB類的,所以很多人一直都找不到釋放串連的方法。
方法如下: 引用 --> (右鍵)添加引用 --> COM --> Microsoft ActiveX Data Objects 2.8 Library
有了這個兩個COM組件後,就可以開始一系列操作啦。。。
一.建立Access資料庫
string dbName = "E:\\Temp\\" + DateTime.Now.Millisecond.ToString() + ".mdb";//注意副檔名必須為mdb,否則不能插入表
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";");
二.建立一個表
ADOX.TableClass tbl = new ADOX.TableClass();
tbl.ParentCatalog = cat;
tbl.Name = "MyTable";
三.增加一個自動成長的欄位
ADOX.ColumnClass col = new ADOX.ColumnClass();
col.ParentCatalog = cat;
col.Type = ADOX.DataTypeEnum.adInteger; //必須先設定欄位類型
col.Name = "id";
col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
col.Properties["AutoIncrement"].Value = true;
tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0);
四.增加一個文字欄位
ADOX.ColumnClass col2 = new ADOX.ColumnClass();
col2.ParentCatalog = cat;
col2.Name = "Description";
col2.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);
下面的這句很重要哦:
cat.Tables.Append(tbl); //把表加入資料庫(非常重要)
五.開啟修改Access資料庫
ADODB.Connection conn = new ADODB.Connection();//ADO連線物件
conn.Open("Provider=Microsoft.Jet.OleDb.4.0;Data Source=Interop.Portal.dll", "", "", 0);
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.ActiveConnection = conn;//設定活動的連線物件
下面的這句非常重要哦: (建立&修改都需要)
//轉換為ADO串連,並關閉
(cat.ActiveConnection as ADODB.Connection).Close();
cat.ActiveConnection = null;
cat = null;