使用c#操作ACCESS資料庫

來源:互聯網
上載者:User

手頭沒有Microsoft Access,如何建立資料庫,一切依然簡單.
首先引用C:\Program Files\Common Files\System\ado\msadox.dll,該DLL包含ADOX命名空間;
接著引用C:\Program Files\Common Files\System\ado\msjro.dll,該DLL包含JRO命名空間
SxS好問提示:如,匯入dll不成功,手動把com組件匯入為 .net組件,在用vs.net工具匯入

using System;
using System.IO;
using ADOX; //該命名空間包含建立ACCESS的類(方法)--解決方案 ==> 引用 ==> 添加引用 ==> 遊覽找到.dll
using JRO; //該命名空間包含壓縮ACCESS的類(方法)
public class Access
...{
/**////根據指定的檔案名稱建立ACCESS資料庫
///mdbPath:要創件的ACCESS絕對路徑
public void Create( string mdbPath )
...{
if( File.Exists(mdbPath) ) //檢查資料庫是否已存在
...{
throw new Exception("目標資料庫已存在,無法建立");
}
// 可以加上密碼,這樣建立後的資料庫必須輸入密碼後才能開啟
mdbPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
// 建立一個CatalogClass對象的執行個體,
ADOX.CatalogClass cat = new ADOX.CatalogClass();
// 使用CatalogClass對象的Create方法建立ACCESS資料庫
cat.Create(mdbPath);
}
/**////壓縮修複ACCESS資料庫,mdbPath為資料庫絕對路徑
public void Compact( string mdbPath )
...{
if( !File.Exists(mdbPath) ) //檢查資料庫是否已存在
...{
throw new Exception("目標資料庫不存在,無法壓縮");
}
//聲明臨時資料庫的名稱
string temp = DateTime.Now.Year.ToString();
temp += DateTime.Now.Month.ToString();
temp += DateTime.Now.Day.ToString();
temp += DateTime.Now.Hour.ToString();
temp += DateTime.Now.Minute.ToString();
temp += DateTime.Now.Second.ToString() + ".bak";
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\")+1) + temp;
//定義臨時資料庫的連接字串
temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定義目標資料庫的連接字串
mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
//建立一個JetEngineClass對象的執行個體
JRO.JetEngineClass jt = new JRO.JetEngineClass();
//使用JetEngineClass對象的CompactDatabase方法壓縮修複資料庫
jt.CompactDatabase( mdbPath2, temp2 );
//拷貝臨時資料庫到目標資料庫(覆蓋)
File.Copy( temp, mdbPath, true );
//最後刪除臨時資料庫
File.Delete( temp );
}

/**//// 備份資料庫,mdb1,來源資料庫絕對路徑; mdb2: 目標資料庫絕對路徑
public void Backup( string mdb1, string mdb2 )
...{
if( !File.Exists(mdb1) )
...{
throw new Exception("來源資料庫不存在");
}
try
...{
File.Copy( mdb1, mdb2, true );
}
catch( IOException ixp )
...{
throw new Exception(ixp.ToString());
}
}
/**////恢複資料庫,mdb1為備份資料庫絕對路徑,mdb2為當前資料庫絕對路徑
public void Recover( string mdb1, string mdb2 )
...{
if( !File.Exists(mdb1) )
...{
throw new Exception("備份資料庫不存在");
}
try
...{
File.Copy( mdb1, mdb2, true );
}
catch( IOException ixp )
...{
throw new Exception(ixp.ToString());
}
}
}
******************************************************************************************************
在BETA2中,。NET提供了以下的NAMESPACE:
System.Data Namespace
System.Data.OleDb (和BETA1中已經不同了,所以如果拿BETA1中的程式到BETA2中來運行肯定不可以的)

如果想講清楚這些東西,我不認為是我可以作到的,所以我想通過一些具體的程式來把我們對資料庫的最基本的操作(SELECT、UPDATE、DELETE、INSERT等)示範一下,其他的還是需要朋友們在學習過程中來慢慢體會了!

要想操作一個資料庫,不論是那種操作,首先要做的肯定是開啟資料庫,下面我們以ACCESS資料庫來做例子說明如何開啟一個資料庫連接!在這裡我們需要用到的是:System.Data.OleDb.OleDbConnection類!(如果操作SQL資料庫,我們最好使用 System.Data.SqlClient.SqlConnection類)

我先寫出我自己使用的程式:

using System.Data
using System.Data.OleDb

public OleDbConnection getConn()
{
string connstr="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=F:\\web\\notesbook\\class\\leavenotes.mdb";
OleDbConnection tempconn= new OleDbConnection(connstr);
return(tempconn);
}

相信只要使用過ADO的朋友應該都可以看懂的!我們先定義一個String類型的變數,其中存放了我們串連資料庫的連接字串,然後在定義一個 System.Data.OleDb.OleDbConnection類型的對象並執行個體化,最後返回這個對象!需要說明一下的是,我並沒有把語句: tempconn.Open();放到這個函數中,原因我我稍後在說明,這裡只是先提醒一下!

通過上面的函數,我們就已經得到了類似於ADO中的連線物件Connection了!下面的就是具體操作資料庫了!

在具體講操作前,我認為有必要先認識一下下面的兩個類:
System.Data.OleDb.OleDbDataAdapter
System.Data.OleDb.OleDbDataReader

System.Data.OleDb.OleDbDataAdapter:可以直接和DataSet聯絡,並操作資料源的,它的功能相對強大一些,因此也比較耗系統資源!
System.Data.OleDb.OleDbDataReader:則有些類似於ADO中的哪個唯讀向前的記錄集,它最常用在只需要依次讀取並顯示資料的時候,相比 System.Data.OleDb.OleDbDataAdapter來說,他耗用的系統資源要小!其實,OleDbDataReader能實現的功能,OleDbDataAdapter都可以實現,不過從資源使用率的角度考慮我們應該盡量使用前者!但有些功能,卻是必須使用 OleDbDataAdapter才可以實現的!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.