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

ADO.NET 對象模型入門 (DataSet/DataTable/DataAdapter/離線架構)

     編輯:關於.NET

ADO.NET 採用 **離線架構** — 資料從資料庫取出後緩存在本地 `DataSet`,無需持續連線。理解核心對象模型是高效資料開發的前提。

核心對象圖

DataSet結構圖

1. DataSet:記憶體中微型資料庫

  • 包含多個 `DataTable` (Tables 集合) 與 `DataRelation` (Relations 集合)。
  • 保留原資料庫的**關係、約束、主鍵/外鍵**等結構性資訊。
  • **離線操作**:修改後批次 `Update` 回資料庫,需定期同步。

2. DataTable:單一表格

  • `Columns`:`DataColumn` 集合,定義欄位名、類型、約束。
  • `Rows`:`DataRow` 集合,**遍歷查看查詢結果的核心入口**。
  • `Constraints`:`UniqueConstraint`、`ForeignKeyConstraint` 等。

3. DataAdapter:橋樑

  • 封裝 `SelectCommand`、`InsertCommand`、`UpdateCommand`、`DeleteCommand`。
  • `Fill(DataSet)`:執行 SelectCommand,結果填入 DataSet。
  • `Update(DataSet)`:根據 RowState (Added/Modified/Deleted) 執行對應命令回寫資料庫。

數據通訊流程圖

實戰代碼:查詢並綁定 ListBox

資料庫表結構

tb_food表結構

WinForms 代碼

using System.Data.SqlClient;

private void Form1_Load(object sender, EventArgs e) {
    string cmdText = "select foodname, id, foodprice from tb_food";
    string connStr = "server=.;database=db_MrCy;uid=sa;pwd=";
    
    SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connStr);
    DataSet ds = new DataSet();
    adapter.Fill(ds); // 斷開連線後 ds 仍保有資料
    
    DataTable dt = ds.Tables[0];
    foreach (DataRow row in dt.Rows) {
        listBox1.Items.Add(row["foodname"]);
    }
}

// 獲取單一值
MessageBox.Show(dt.Rows[2]["foodname"].ToString()); // 第 3 行 foodname

運行結果

ListBox綁定結果

關鍵概念釐清

概念說明
離線架構連線 → 取數據 → 斷線 → 本地操作 → 連線 → 批次更新。減少資料庫連線佔用,提升擴展性。
DataSet 結構僅包含 SELECT 子句指定的欄位 (此例 foodname/id/foodprice),非整表所有欄位。
DataRow 狀態`RowState` 屬性:`Unchanged`/`Added`/`Modified`/`Deleted`,驅動 `Update` 邏輯。
強類型 DataSetVS 設計器生成 `.xsd` → 衍生類,提供 `ds.Tables[0].Rows[0].FoodName` 型別安全存取。

從 VB6/ADO 遷移的關鍵認知轉變

  1. **Recordset → DataTable/DataView** : 遊標式 → 表格式。
  2. **連線常開 → 即連即斷** : `Fill`/`Update` 瞬間連線。
  3. **客戶端遊標 → 服務端/無遊標** : ADO.NET 無伺服器端遊標概念。
  4. **編輯即提交 → 批次更新** : `AcceptChanges`/`RejectChanges` 控制提交時機。

掌握 DataSet/DataTable/DataAdapter 三角鐵三角,即掌握 ADO.NET 80% 核心應用場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved