ODBC → OLE DB → ADO (COM) → **ADO.NET (Managed)**。ADO.NET 為 .NET 資料存取基石,核心優勢:
| 提供者 | 命名空間 | 前綴 | 適用對象 |
|---|---|---|---|
| SQL Server | System.Data.SqlClient | Sql | SQL Server 7.0+ (直連 TDS 協定,效能最佳) |
| OLE DB | System.Data.OleDb | OleDb | Access、Excel、Oracle、舊版 SQL Server、其他 OLE DB 來源 |
引用:`using System.Data.SqlClient;` 或 `using System.Data.OleDb;`
// 連線
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
// ...操作...
conn.Close(); // 必須關閉,或 using 區塊自動釋放
// 命令
SqlCommand cmd = new SqlCommand(sql, cmd);
cmd.CommandType = CommandType.Text / StoredProcedure;
cmd.Parameters.AddWithValue("@id", 123); // 參數化,防注入
// 執行
int rows = cmd.ExecuteNonQuery(); // INSERT/UPDATE/DELETE
object scalar = cmd.ExecuteScalar(); // 單一值 (COUNT, MAX, IDENTITY)
SqlDataReader dr = cmd.ExecuteReader(); // 唯讀、前進游標,高效能
// 資料配接器 + DataSet (離線)
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "TableName");
// ds 可序列化、跨層傳遞、XML 匯入匯出
// 參數建立最佳實踐
SqlParameter p = new SqlParameter("@name", SqlDbType.NVarChar, 50) { Value = "John" };
cmd.Parameters.Add(p);
| 屬性 | 說明 | 範例 |
|---|---|---|
| Data Source / Server | 伺服器位址 | localhost, 192.168.1.100, .\SQLEXPRESS |
| Initial Catalog / Database | 資料庫名稱 | MyDB |
| User ID / UID | 登入帳號 | sa |
| Password / PWD | 密碼 | P@ssw0rd |
| Integrated Security / Trusted_Connection | Windows 整合驗證 | true / SSPI |
| Connection Timeout | 連線逾時秒數 | 30 (預設 15) |
| Max Pool Size / Min Pool Size | 連線池大小 | 100 / 0 |
| MultipleActiveResultSets (MARS) | 單一連線多重作用中結果集 | true |
| Encrypt / TrustServerCertificate | SSL 加密 | true / false |