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

WinForm 與 ADO.NET 實戰(二):DataAdapter、DataSet 與 DataTable 深度應用

     編輯:關於.NET

前言

承接上一篇介紹 ADO.NET 核心物件(Connection、Command、DataReader)之後,本文將深入探討 ADO.NET 中極具實用價值的「資料配接器」與「記憶體資料表」相關物件。掌握這些概念,能讓您在 Windows Forms 應用程式中更靈活地處理離線資料操作。

核心物件解析

DataAdapter:資料源與記憶體的橋樑

DataAdapter 是 ADO.NET 受控提供者的核心組件,專責在資料來源(如 SQL Server)與 DataSet 之間雙向交換資料。它封裝了開啟/關閉連線、執行命令等繁瑣細節,讓開發者專注於資料邏輯。

常用方法:

  • Fill(DataTable):執行 SELECT 指令,將結果填入 DataTable,自動建立資料表結構。
  • Update(DataSet):檢查 DataSet 中的行狀態(新增、修改、刪除),自動產生對應的 INSERT/UPDATE/DELETE 命令回寫資料庫。
  • Dispose():釋放非受控資源。

DataSet:記憶體中的微型資料庫

DataSet 位於 System.Data 命名空間,是離線架構的核心。它在記憶體中快取從資料庫檢索的資料,擁有完整的關聯式結構:DataTable 集合、DataRelation、Constraint 等。支援標準的檢視、新增、刪除、更新操作,且不限於資料庫資料,也能處理 XML、集合等資料來源。

DataTable:單一記憶體資料表

DataTable 代表記憶體中一張關聯式資料表,可獨立使用,亦常作為 DataSet 的成員。擁有 Columns、Rows、Constraints 等屬性,提供豐富的資料操作方法。

實戰範例:WinForm 數據綁定與查詢

沿用上一篇的專案,示範如何使用 SqlDataAdapter 填充 DataTable 並綁定至 DataGridView,結合 ComboBox 實現條件查詢。

1. 介面佈局

從工具箱拖曳一個 DataGridView(命名為 dataGridView1)與一個 ComboBox(comboBox1)至表單,並添加一個「查詢」按鈕(button4)。

表單設計介面

2. 資料存取類(Users.cs)新增方法

/// 
/// 查詢所有用戶,回傳 DataTable
/// 
public DataTable GetAllUsers()
{
    string sql = "SELECT * FROM Users";
    DataTable dt = new DataTable();
    // SqlDataAdapter 自動處理連線開啟/關閉
    SqlDataAdapter da = new SqlDataAdapter(sql, Conn);
    da.Fill(dt);
    return dt;
}

/// 
/// 依使用者名稱模糊查詢
/// 
public DataTable GetUsersByName(string name)
{
    string sql = "SELECT * FROM Users WHERE Username LIKE '%" + name + "%'";
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(sql, Conn);
    da.Fill(dt);
    return dt;
}

關鍵點: SqlDataAdapter 建構子直接接收 SQL 字串與連線物件,Fill() 會自動開啟連線、執行查詢、關閉連線,極大簡化程式碼。

3. 表單載入事件:初始化資料與下拉選單

private Users u = new Users(); // 實例化資料類

private void RefreshData()
{
    // 綁定所有用戶至 DataGridView
    dataGridView1.DataSource = u.GetAllUsers();

    // 填充 ComboBox 供查詢選擇
    comboBox1.Items.Clear();
    foreach (string userName in u.GetUserList()) // 假設 GetUserList 回傳 ArrayList
    {
        comboBox1.Items.Add(userName);
    }
}

private void Form2_Load(object sender, EventArgs e)
{
    RefreshData();
}

4. 查詢按鈕點擊事件

private void button4_Click(object sender, EventArgs e)
{
    string name = comboBox1.Text.Trim();
    if (!string.IsNullOrEmpty(name))
    {
        dataGridView1.DataSource = u.GetUsersByName(name);
    }
    else
    {
        RefreshData(); // 若無輸入則顯示全部
    }
}

總結

本文實作展示了 DataAdapter 搭配 DataTable 實現離線資料操作的典型模式:Fill 填充 → 記憶體操作 → Update 回寫。此模式適用於中小型資料量、需頻繁互動的 WinForm 場景。後續文章將深入探討 DataSet 的關聯關係、事務處理與進階更新策略。

本文出自「共享經驗」部落格,原文連結:https://jianle.blog.51cto.com/429692/109801

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