ADO.NET 開發首步必引用 System.Data 與 System.Data.OleDb(或 SqlClient)命名空間。連線物件 OleDbConnection 採用連線字串初始化,Open() 與 Close() 需成對呼叫,建議搭配 using 區塊確保資源釋放:
using (var conn = new OleDbConnection(connString)) {
conn.Open();
// 執行資料操作
}
OleDbCommand 封裝 SQL 指令與預存程序,提供三種核心執行方式:
| 方法 | 適用場景 | 回傳值 |
|---|---|---|
ExecuteNonQuery() | INSERT/UPDATE/DELETE、DDL | 影響筆數 (int) |
ExecuteReader() | SELECT 查詢 | OleDbDataReader (只進流) |
ExecuteScalar() | 單一值統計 (COUNT、SUM 等) | object (需轉型) |
OleDbDataReader 為輕量級唯讀游標,支援強型別取值方法(GetString、GetInt32、GetDateTime 等),避免装箱/拆箱效能損耗。典型讀取模式:
using (var reader = cmd.ExecuteReader()) {
while (reader.Read()) {
string name = reader.GetString(0);
int age = reader.GetInt32(1);
// 處理業務邏輯
}
}
OleDbDataAdapter 扮演資料庫與 DataSet 之間的橋樑:
Fill(ds, "TableName"):將查詢結果填入 DataSetUpdate(ds, "TableName"):將 DataSet 變更批次回寫資料庫TableMappings / ColumnMappings:實現資料表/欄位別名對應DataSet 為記憶體內關聯式資料容器,可包含多 DataTable、DataRelation、約束與運算欄位,完全脫離資料庫連線獨立運作。
OleDbCommandBuilder 可根據 SelectCommand 自動生成 Insert/Update/Delete 命令,原型開發極便利,但生產環境存在效能開銷與靈活度不足問題。建議:
透過 ItemTemplate、AlternatingItemTemplate、HeaderTemplate、FooterTemplate 完全掌控 HTML 輸出,適合唯讀清單呈現。資料繫結雙步驟:
Repeater1.DataSource = ds.Tables["Users"].DefaultView;
DataBind(); // 或 Repeater1.DataBind();
擴充 SelectedItemTemplate、EditItemTemplate,配合 DataKeyField 與 ItemCommand 事件實現列選取與編輯切換。
支援 BoundColumn、ButtonColumn、EditCommandColumn、HyperLinkColumn、TemplateColumn 五大欄位類型。編輯流程三大事件:
EditCommand:進入編輯模式 dg.EditItemIndex = e.Item.ItemIndexCancelCommand:取消編輯 dg.EditItemIndex = -1UpdateCommand:執行更新邏輯後重新繫結關鍵技巧:Page_Load 中以 !Page.IsPostBack 守護初始繫結,避免 PostBack 覆蓋使用者輸入。
啟用 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();
}
DefaultView 支援排序/篩選