首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 操作資料庫基礎:ADO.NET 核心物件與連線字串完整指南

     編輯:關於ASP.NET

ADO.NET 演進脈絡

ODBC → OLE DB → ADO (COM) → **ADO.NET (Managed)**。ADO.NET 為 .NET 資料存取基石,核心優勢:

  • 斷層架構:`DataSet`/`DataTable` 離線操作,不佔用連線資源。
  • 強型別:泛型集合、LINQ to DataSet、Entity Framework 基礎。
  • XML 整合:`DataSet` 原生支援 XML 讀寫、Schema、DiffGram。
  • 多提供者模型:`SqlClient` (SQL Server)、`OleDb` (Access/Excel)、`Odbc`、Oracle、MySQL、PostgreSQL 等。

兩大托管提供者

提供者命名空間前綴適用對象
SQL ServerSystem.Data.SqlClientSqlSQL Server 7.0+ (直連 TDS 協定,效能最佳)
OLE DBSystem.Data.OleDbOleDbAccess、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_ConnectionWindows 整合驗證true / SSPI
Connection Timeout連線逾時秒數30 (預設 15)
Max Pool Size / Min Pool Size連線池大小100 / 0
MultipleActiveResultSets (MARS)單一連線多重作用中結果集true
Encrypt / TrustServerCertificateSSL 加密true / false

Connection 物件常用屬性與方法

  • `State`:`Open`、`Closed`、`Connecting`、`Executing`、`Fetching`、`Broken`。
  • `ConnectionString`:取得/設定連線字串。
  • `Database`:目前資料庫名稱。
  • `DataSource`:伺服器名稱。
  • `Open()` / `Close()` / `Dispose()`。
  • `BeginTransaction()` / `EnlistTransaction()`:交易控制。
  • `ChangeDatabase(string)`:切換資料庫。
  • `GetSchema()`:取得中繼資料 (資料表、欄位、索引等)。

連線池原則

  • 相同連線字串 (字元大小順序完全一致) 共用連線池。
  • `using` 區塊確保 `Dispose()` 歸還連線池,而非真正關閉實體連線。
  • 避免在迴圈中頻繁 `Open`/`Close`,批次操作共用單一連線。
  • 監控效能計數器:`.NET Data Provider for SqlServer` → `NumberOfPooledConnections`、`NumberOfActiveConnections`。

最佳實踐清單

  1. 永遠使用參數化查詢,杜絕 SQL Injection。
  2. 優先 `SqlDataReader` 唯讀場景;需離線/序列化/多表關聯用 `DataSet`/`DataAdapter`。
  3. 連線字串放入 `web.config` ``,加密 `aspnet_regiis -pef connectionStrings`。
  4. 啟用 MARS (`MultipleActiveResultSets=true`) 解決單連線多 Reader 衝突。
  5. 大量資料匯入用 `SqlBulkCopy`,效能遠超 `INSERT` 迴圈。
  6. 非同步方法:`OpenAsync`、`ExecuteReaderAsync`、`ReadAsync` 配合 `async/await` 提升擴展性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved