在 ASP.NET 開發中,連接 Microsoft Access 資料庫是常見需求。本文將詳細介紹如何使用 System.Data.OleDb 命名空間下的 OleDbConnection、OleDbCommand 與 OleDbDataReader 類別,建立帶密碼保護的 Access 資料庫連線、執行 SQL 查詢,並將結果以 HTML 表格形式輸出。
using System.Data.OleDb;
針對有密碼的 Access 2003 (.mdb) 檔案,連接字串格式如下:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\pro\web\access_test\app_data\Northwind.mdb;Jet OLEDB:Database Password=111111
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 連接字串,請依實際路徑修改
string sqlconn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\pro\web\access_test\app_data\Northwind.mdb;Jet OLEDB:Database Password=111111";
using (OleDbConnection myConnection = new OleDbConnection(sqlconn))
{
myConnection.Open();
// 查詢「運貨商」資料表所有欄位
using (OleDbCommand myCommand = new OleDbCommand("SELECT * FROM 運貨商", myConnection))
using (OleDbDataReader myReader = myCommand.ExecuteReader())
{
// 輸出 HTML 表格標頭
Response.Write("<table border=1 cellspacing=0 cellpadding=2>");
Response.Write("<tr bgcolor=#DAB4B4>");
for (int i = 0; i < myReader.FieldCount; i++)
{
Response.Write("<td>" + myReader.GetName(i) + "</td>");
}
Response.Write("</tr>");
// 逐筆讀取並輸出資料列
while (myReader.Read())
{
Response.Write("<tr>");
for (int i = 0; i < myReader.FieldCount; i++)
{
Response.Write("<td>" + myReader[i].ToString() + "</td>");
}
Response.Write("</tr>");
}
Response.Write("</table>");
} // using 區塊結束時自動關閉 DataReader 與 Connection
}
}
}
OleDbConnection、OleDbCommand、OleDbDataReader 等實作 IDisposable 的物件在使用完畢後正確釋放資源,避免連線洩漏。OleDbDataReader,提供唯讀、順向的資料流讀取方式,效能優於 DataSet。
Web.config 的 <connectionStrings> 區段,方便維護與部署。Microsoft.ACE.OLEDB.12.0,並安裝對應的 Access Database Engine。