從 SQL Server 轉用 Access,核心差異在於命名空間與連接字串,命令物件用法大同小異。
| 項目 | SQL Server | Access (OleDb) |
|---|---|---|
| 命名空間 | System.Data.SqlClient | System.Data.OleDb |
| 連接類別 | SqlConnection | OleDbConnection |
| 命令類別 | SqlCommand | OleDbCommand |
| DataReader | SqlDataReader | OleDbDataReader |
| DataAdapter | SqlDataAdapter | OleDbDataAdapter |
string conString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +
Server.MapPath(@"\DB\data.mdb");
// 建議用相對路徑:Server.MapPath(@"DB\data.mdb")
OleDbConnection con = new OleDbConnection(conString);
con.Open();
Jet OLEDB:Database Password 也不一定生效。Access 的「備註」型別對應 OleDbType.LongVarChar:
OleDbParameter p = new OleDbParameter("@memo", OleDbType.LongVarChar);
p.Value = memoText;
cmd.Parameters.Add(p);
除連接層物件前綴從 Sql 改為 OleDb 外,ADO.NET 程式碼結構幾乎無縫遷移。注意路徑解析與密碼設定兩大坑即可。