ASP.NET 操作 Access 與 SQL Server 在命名空間、連線字串、命令物件、密碼處理、欄位型別對應上有顯著差異。本文整理實務經驗,提供對照表與避坑指南。
| 資料庫 | 命名空間 |
|---|---|
| SQL Server | using System.Data; using System.Data.SqlClient; |
| Access | using System.Data; using System.Data.OleDb; |
SQL Server:Server=.;Database=MyDB;Uid=sa;Pwd=123; (或整合驗證)
Access:
string conString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
conString += Server.MapPath(@"\Jlgps\DB\Jlgps.mdb");
// 建議使用相對路徑:@"DB\Jlgps.mdb" 避免絕對路徑部署差異
OleDbConnection con = new OleDbConnection(conString);
con.Open();
@ 字串字面值免雙反斜線。相對路徑從應用程式根目錄起算,部署更彈性。
| 功能 | SQL Server | Access |
|---|---|---|
| Connection | SqlConnection | OleDbConnection |
| Command | SqlCommand | OleDbCommand |
| DataReader | SqlDataReader | OleDbDataReader |
| DataAdapter | SqlDataAdapter | OleDbDataAdapter |
| Parameter | SqlParameter | OleDbParameter |
用法大同小異,僅類別前綴不同。
❌ 「工具 → 安全性 → 設定資料庫密碼」:設定後連線字串需加 Jet OLEDB:Database Password,易出錯。
✅ 「工具 → 安全性 → 使用者與群組帳戶」設定密碼:連線字串完全不用改,仍能正常連線,且開啟 MDB 時仍需輸入密碼。
Access 型別與 OleDbType 難一一對應,取最相近即可。例:備註型 (Memo) → OleDbType.LongVarChar。
OleDbParameter para = new OleDbParameter("@proFun", OleDbType.LongVarChar);
para.Value = myaddPro.proFun; // 產品功能描述,Memo 型別
cmd.Parameters.Add(para);
掌握上述差異,可在雙資料庫環境中順暢切換開發。