DataSet 物件於用戶端建立,不佔用伺服器資源;大量並發請求不會導致資料庫伺服器崩潰。
protected void Delete_record(object sender, EventArgs e)
{
DialogResult r = MessageBox.Show("確定刪除當前記錄?", "刪除確認",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r != DialogResult.Yes) return;
try
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "DELETE FROM person WHERE id = " + t_id.Text;
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
cmd.ExecuteNonQuery(); // 1. 資料庫層面刪除
}
// 2. DataSet 層面同步刪除
myDataSet.Tables["person"].Rows[myBind.Position].Delete();
myDataSet.Tables["person"].AcceptChanges(); // 提交變更
}
}
catch (Exception ex)
{
MessageBox.Show("刪除錯誤:" + ex.Message);
}
}
| 步驟 | 程式碼 | 用途 |
|---|---|---|
| 1 | OleDbCommand.ExecuteNonQuery() | 對資料庫執行 DELETE |
| 2 | DataRow.Delete() | 標記 DataSet 中該行為刪除狀態 |
| 3 | DataTable.AcceptChanges() | 永久移除標記行,更新繫結 UI |
若省略步驟 2-3,資料庫已刪除但 DataSet 仍保留該行,DataGrid 等繫結控制項會繼續顯示,使用者以為刪除失敗。