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

Visual C# 資料庫基礎程式設計(三):刪除記錄與 DataSet 同步機制

     編輯:關於C語言

刪除記錄的兩大關鍵觀念

  1. DataSet 在客戶端:DataSet 物件於用戶端建立,不佔用伺服器資源;大量並發請求不會導致資料庫伺服器崩潰。
  2. 雙重同步:執行 SQL DELETE 移除資料庫資料後,**必須同步刪除 DataSet 對應行並呼叫 AcceptChanges()**,否則繫結控制項仍顯示舊資料,產生「刪除無效」假象。

完整刪除程式碼 (Access 2000 範例)


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);
    }
}

關鍵步驟解析

步驟程式碼用途
1OleDbCommand.ExecuteNonQuery()對資料庫執行 DELETE
2DataRow.Delete()標記 DataSet 中該行為刪除狀態
3DataTable.AcceptChanges()永久移除標記行,更新繫結 UI

若省略步驟 2-3,資料庫已刪除但 DataSet 仍保留該行,DataGrid 等繫結控制項會繼續顯示,使用者以為刪除失敗。

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