C#操作Access數據庫,收集了3篇經典文章

【導言】因為開發制作一個小工具“數據轉移工具”,需要用C#操作Access數據庫。所以上網搜索了一下,有三篇文章內容比較好,特收錄如下。

另有一份大禮送給網友:《ADO 程序員參考》 

 另一個鏈接:CSDN下載-ADO程序員參考中文版

 

一、創建數據庫的基本方法:

原作者迭失

microsoft ado ext.2.8
 
我想利用C#創建一個ACCESS數據庫文件(A.mdb)。請問用什么辦法可以實現。
A.mdb文件是原來沒有的,程序需要創建一個然后往里面寫數據!

1.
※新建工程
※進入解決方案->引用->添加引用
選擇com標簽 下的microsoft ado ext.2.8.....
->選擇-> OK
※編碼
//命令行工程代碼如下
using System;
using ADOX;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=D:\\AccessDB\\NewMDB.mdb;" +
"Jet OLEDB:Engine Type=5");
Console.WriteLine("Database Created Successfully");
cat = null;
}
}
}
//asp.net代碼如下
private void Page_Load(object sender, System.EventArgs e)
{
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C://database//NewMDB.mdb;" +
"Jet OLEDB:Engine Type=5");
cat = null;
Response.Write("OK");
2.用sqlserver 的代碼如下
SqlConnection conn=new SqlConnection("Server=lemoncat007;Uid=sa;Pwd=gtt");
conn.Open();
SqlCommand cmd=new SqlCommand("create database test",conn);
cmd.ExecuteNonQuery();
3 也可以創建一個Procedure 將創建數據庫的語句寫到里面然后執行
 

二、創建數據庫,并且添表和添加字段

原文《用C#動態創建Access數據庫》

記得以前要動態的創建Access數據庫的mdb文件都是采用DAO,用VC開發,一大堆的API,很是麻煩。現在好像也鮮有人提起DAO。其實動態的創建mdb數據的最簡單的方法還是ADOX。
      用ADOX創建access數據庫方法很簡單,只需要new一個Catalog對象,然后調用它的Create方法就可以了,如下:

ADOX.Catalog catalog = new Catalog();
catalog.Create(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb;Jet OLEDB:Engine Type=5");


      僅僅兩行代碼就搞定了。下來我主要介紹一下在c#中的實現細節。首先你要添加引用,在“Add reference”對話框里切換到Com頁面,選擇“Microsoft ADO Ext. 2.8 for DDL and Security”,然后點擊OK。在文件的開頭using ADOX名字空間。然后添加如上面所示的代碼就可以成功的創建Access 數據庫了,代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using ADOX;

namespace testADOX
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            ADOX.Catalog catalog 
= new Catalog();
            catalog.Create(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb;Jet OLEDB:Engine Type=5");
        }

    }

}


      創建了數據庫文件是沒有實際用處的,我們還要創建表。在創建表之前,我們必須連接目標數據庫,用來連接數據的橋梁居然是ADO的Connection對象,所以我們不得不再次添加對ADO的應用,在添加引用對話框中切換到Com頁面,選擇“Microsoft ActiveX Data Objects 2.8 Library”,然后點擊OK。下邊是創建表的完整代碼:

using System;
using System.Collections.Generic;
using System.Text;
using ADOX;

namespace testADOX
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            ADOX.Catalog catalog 
= new Catalog();
            catalog.Create(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb;Jet OLEDB:Engine Type=5");

            ADODB.Connection cn 
= new ADODB.Connection();
            
            cn.Open(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\test.mdb"nullnull-1);
            catalog.ActiveConnection 
= cn;

            ADOX.Table table 
= new ADOX.Table();
            table.Name 
= "FirstTable";

            ADOX.Column column 
= new ADOX.Column();
            column.ParentCatalog 
= catalog;
            column.Name 
= "RecordId";
            column.Type 
= DataTypeEnum.adInteger;
            column.DefinedSize 
= 9;
            column.Properties[
"AutoIncrement"].Value = true;
            table.Columns.Append(column, DataTypeEnum.adInteger, 
9);
            table.Keys.Append(
"FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, column, nullnull);
            table.Columns.Append(
"CustomerName", DataTypeEnum.adVarWChar, 50);
            table.Columns.Append(
"Age", DataTypeEnum.adInteger, 9);
            table.Columns.Append(
"Birthday", DataTypeEnum.adDate, 0);
            catalog.Tables.Append(table);
         
            cn.Close();
        }

    }

}

      上面的代碼中,創建了一個名為FirstTable的表,在表里加入了4個字段,并設置了一個主鍵。表里的字段分別輸入4中不同的常用類型,第一個字段是一個自動增長的整數類型,這個類型比較特殊,你必須為這個字段設置ParentCatalog屬性,并將“AutoIncrement”的屬性值設為true.。Access里的Text類型對應的就是adVarWchar,而日期類型對應的是adDate。
鍵的設置如table.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, column, null, null)所示,如果是外鍵的話,你還必須要設置關聯的表和關聯的字段,也就是Append方法的后兩個字段。
你也可以參照上邊的代碼創建索引和視圖。

三、C#創建Access數據庫的備注字段

 原文:http://www.hackpig.cn/post/168.html

 

具體的用C#創建方式網上一堆,主要是創建備注字段的時候遇到的問題。
用ADOX創建的,在工程里添加引用dll就不說了,錯誤的步驟如下(就少了一步):
-------------------------------------------------------------------
            //創建庫
            ADOX.CatalogClass catLog = new ADOX.CatalogClass();
            catLog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="+path+";");
           
            //創建表
            ADOX.TableClass tbl = new ADOX.TableClass();
            tbl.ParentCatalog = catLog;
            tbl.Name = "NewTable";

            //增加字段
           ADOX.ColumnClass c = new ADOX.ColumnClass();
           c.ParentCatalog = catLog;
           c.Name = list1[i];
           c.Properties["Jet OLEDB:Allow Zero Length"].Value = true;
           tbl.Columns.Append(c, ADOX.DataTypeEnum.adLongVarWChar, 16);

            catLog.Tables.Append(tbl);
---------------------------------------------------------------------
Access的備注類型是Memo,不過在ADOX方式下,DataTypeEnum枚舉里是沒有這項的,adLongVarWChar就是備注,長度為16。這樣創建,是不報錯的,但是無論如何,建立出來的都是文本型的字段,最大長度限制是255,在內容很多的時候不夠用,查了一堆,發現就是因為少了一句,正確的如下:

-------------------------------------
            //創建庫
            ADOX.CatalogClass catLog = new ADOX.CatalogClass();
            catLog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="+path+";");
           
            //創建表
            ADOX.TableClass tbl = new ADOX.TableClass();
            tbl.ParentCatalog = catLog;
            tbl.Name = "NewTable";

            //增加字段
           ADOX.ColumnClass c = new ADOX.ColumnClass();
           c.ParentCatalog = catLog;
           c.Type = ADOX.DataTypeEnum.adLongVarWChar; //這句不能少,并且位置必須在其它屬性前面,否則會報錯。
           c.Name = list1[i];
           c.Properties["Jet OLEDB:Allow Zero Length"].Value = true;
           tbl.Columns.Append(c, ADOX.DataTypeEnum.adLongVarWChar, 16);

            catLog.Tables.Append(tbl);
-------------------------------------

這樣,就建立出來備注類型的字段了。

 

 

posted @ 2010-08-27 15:49  柳城之城  閱讀(...)  評論(...編輯  收藏
三d开奖结果走势图