首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 連接 Access 資料庫刪除資料時,總是刪除第一行而非選中行的解決方法

     編輯:程式設計綜合問答

在 C# 應用程式中操作 Access 資料庫時,開發者常會遇到一個令人困惑的問題:明明在 DataGridView 中選中了某一行並嘗試刪除,程式卻總是刪除資料表中的第一行資料。這通常是因為程式碼直接使用了 ds.Tables["DressingWheel"].Rows[0] 這樣的硬式索引,導致永遠只針對第一行進行操作。

問題根源分析

當你編寫如下程式碼時:

DataRow dr = ds.Tables["DressingWheel"].Rows[0];

這裡的 Rows[0] 明確指定了索引為 0 的行,即資料表的第一行。無論使用者在介面上選中哪一行,這段程式碼都不會隨之改變,因此刪除操作永遠作用於第一筆資料。

正確解決方案:透過 DataGridView 獲取當前選中行索引

若專案中使用了 DataGridView 顯示資料,應利用其 CurrentRow.Index 屬性動態獲取使用者當前選中的行索引,再對應到 DataTable 中的行進行操作。正確程式碼如下:

int index = dgv.CurrentRow.Index;
DataRow dr = ds.Tables["DressingWheel"].Rows[index];
dr.Delete(); // 標記刪除,後續配合 Update 寫入資料庫

關鍵點補充

  • 索引同步:確保 DataGridView 的行順序與 DataTable 的行順序一致(未經過排序、篩選導致順序不一致時,需透過主鍵或唯一識別碼查找對應行)。
  • 資料提交:呼叫 dr.Delete() 後,記得使用 DataAdapter.Update() 將變更同步回 Access 資料庫。
  • 多選處理:若允許多選,需遍歷 dgv.SelectedRows 集合逐一處理。

掌握這個技巧,即可精準刪除使用者選中的任意行資料,避免誤刪第一行的低級錯誤。

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