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

ADO.NET 資料庫實戰教學:從連線物件到 DataGrid 完整應用指南

     編輯:關於.NET

核心命名空間與連線基礎

ADO.NET 開發首步必引用 System.Data 與 System.Data.OleDb(或 SqlClient)命名空間。連線物件 OleDbConnection 採用連線字串初始化,Open() 與 Close() 需成對呼叫,建議搭配 using 區塊確保資源釋放:

using (var conn = new OleDbConnection(connString)) {
    conn.Open();
    // 執行資料操作
}

Command 物件:四大執行模式精解

OleDbCommand 封裝 SQL 指令與預存程序,提供三種核心執行方式:

方法適用場景回傳值
ExecuteNonQuery()INSERT/UPDATE/DELETE、DDL影響筆數 (int)
ExecuteReader()SELECT 查詢OleDbDataReader (只進流)
ExecuteScalar()單一值統計 (COUNT、SUM 等)object (需轉型)

DataReader:高效能唯讀資料流

OleDbDataReader 為輕量級唯讀游標,支援強型別取值方法(GetString、GetInt32、GetDateTime 等),避免装箱/拆箱效能損耗。典型讀取模式:

using (var reader = cmd.ExecuteReader()) {
    while (reader.Read()) {
        string name = reader.GetString(0);
        int age = reader.GetInt32(1);
        // 處理業務邏輯
    }
}

DataAdapter 與 DataSet:離線資料架構核心

OleDbDataAdapter 扮演資料庫與 DataSet 之間的橋樑:

  • Fill(ds, "TableName"):將查詢結果填入 DataSet
  • Update(ds, "TableName"):將 DataSet 變更批次回寫資料庫
  • TableMappings / ColumnMappings:實現資料表/欄位別名對應

DataSet 為記憶體內關聯式資料容器,可包含多 DataTable、DataRelation、約束與運算欄位,完全脫離資料庫連線獨立運作。

CommandBuilder:自動生成命令的雙面刃

OleDbCommandBuilder 可根據 SelectCommand 自動生成 Insert/Update/Delete 命令,原型開發極便利,但生產環境存在效能開銷與靈活度不足問題。建議:

  1. 原型階段使用 CommandBuilder 快速驗證
  2. 正式專案改為顯式定義四大 Command 物件
  3. 優先採用預存程序封裝業務邏輯

資料繫結控制項實戰:Repeater、DataList、DataGrid

Repeater:輕量級唯讀渲染

透過 ItemTemplate、AlternatingItemTemplate、HeaderTemplate、FooterTemplate 完全掌控 HTML 輸出,適合唯讀清單呈現。資料繫結雙步驟:

Repeater1.DataSource = ds.Tables["Users"].DefaultView;
DataBind(); // 或 Repeater1.DataBind();

DataList:支援選取與編輯模板

擴充 SelectedItemTemplate、EditItemTemplate,配合 DataKeyField 與 ItemCommand 事件實現列選取與編輯切換。

DataGrid:功能最完整的表格控制項

支援 BoundColumn、ButtonColumn、EditCommandColumn、HyperLinkColumn、TemplateColumn 五大欄位類型。編輯流程三大事件:

  • EditCommand:進入編輯模式 dg.EditItemIndex = e.Item.ItemIndex
  • CancelCommand:取消編輯 dg.EditItemIndex = -1
  • UpdateCommand:執行更新邏輯後重新繫結

關鍵技巧:Page_Load 中以 !Page.IsPostBack 守護初始繫結,避免 PostBack 覆蓋使用者輸入。

DataGrid 進階:排序與分頁

啟用 AllowSorting="True" 並處理 SortCommand 事件,配合 DataView.Sort 屬性實現多欄位升/降序切換:

void dg_Sort(object sender, DataGridSortCommandEventArgs e) {
    var view = new DataView(ds.Tables["Users"]);
    view.Sort = e.SortExpression + (ascending ? " ASC" : " DESC");
    dg.DataSource = view;
    dg.DataBind();
}

最佳實踐總結

  1. 連線物件儘早開啟、儘早關閉,善用連線池
  2. 參數化查詢防禦 SQL Injection
  3. DataSet 適合中小資料量離線操作;大資料量改用 DataReader 分頁讀取
  4. 生產環境顯式定義 DataAdapter 四大命令,避免 CommandBuilder 開銷
  5. 資料繫結採用 DefaultView 支援排序/篩選
  6. 編輯類控制項嚴格區分初始載入與 PostBack 邏輯
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved