C# 創建表ACCESS表,添加修改字段


最開始以為access 修改字段信息,用 ALTER TABLE 語句就可以了,

打開access 文件執行了

ALTER TABLE user ALTER COLUMN address TEXT(10)

發現可以運行,於是乎,就用C#鏈接 數據庫 OleDbConnection,OleDbCommand 去執行,可是字符串一模一樣。 就是執行報錯提示  ALTER TABLE 語法錯誤.

 

http://www.accessoft.com/article-show.asp?id=929

https://support.microsoft.com/zh-cn/office/alter-table-%E8%AF%AD%E5%8F%A5-81d241e3-1522-4103-acf0-9857888d581c

 

 

既然說用DAO create方法。

============================================================

C#操作Access數據庫(創建&修改結構)

想要在程序中控制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 + ";");

二.建立連接使用已有數據表

        ADODB.Connection conn = new ADODB.Connection();
        conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB/MarketDB.mdb", null, null, -1);
        ADOX.Catalog catalog = new ADOX.Catalog();
        catalog.ActiveConnection = conn;
        ADOX.Table table = catalog.Tables["user"];

三.建立一個數據表

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); //把表加入數據庫(非常重要)

六:關閉

//轉換為ADO連接,並關閉
(cat.ActiveConnection as ADODB.Connection).Close();
cat.ActiveConnection = null;
cat = null;

附件:代碼

/// <summary> 
   /// CreateAccessDB 的摘要說明。 
   /// 對於不同版本的ADO,需要添加不同的引用 
   /// 請添加引用Microsoft ADO Ext. 2.7 for DDL and Security 
   /// 請添加引用Microsoft ADO Ext. 2.8 for DDL and Security 
   /// </summary> 
   
   protected void Page_Load(object sender, EventArgs e) 
   { 
   //為了方便測試,數據庫名字采用比較隨機的名字,以防止添加不成功時還需要重新啟動IIS來刪除數據庫。 
   string dbName = "D:\\NewMDB" + DateTime.Now.Millisecond.ToString() + ".mdb"; 
   ADOX.CatalogClass cat = new ADOX.CatalogClass(); 
   cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";"); 
   Response.Write("數據庫:" + 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); 
   
   //增加數字字段 
   ADOX.ColumnClass col3 = new ADOX.ColumnClass(); 
   col3.ParentCatalog = cat; 
   col3.Name = "數字"; 
   col3.Type = DataTypeEnum.adDouble; 
   col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false; 
   tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDouble, 666); 
   
   //增加Ole字段 
   ADOX.ColumnClass col4 = new ADOX.ColumnClass(); 
   col4.ParentCatalog = cat; 
   col4.Name = "Ole類型"; 
   col4.Type = DataTypeEnum.adLongVarBinary; 
   col4.Properties["Jet OLEDB:Allow Zero Length"].Value = false; 
   tbl.Columns.Append(col4, ADOX.DataTypeEnum.adLongVarBinary, 0); 
   
   
   //設置主鍵 
   tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", ""); 
   cat.Tables.Append(tbl); 
   
   msg.Text = ("<br>數據庫表:" + tbl.Name + "已經創建成功!"); 
   
   System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl); 
   System.Runtime.InteropServices.Marshal.ReleaseComObject(cat); 
   tbl = null; 
   cat = null; 
   GC.WaitForPendingFinalizers(); 
   GC.Collect(); 
   } 

 

 

轉: https://blog.csdn.net/xiatiancc/article/details/80405232

https://www.cnblogs.com/lanyubaicl/p/10102032.html

https://blog.csdn.net/hit_why/article/details/53435984

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM