更改DataTable中的數據



10.2.2  更改DataTable中的數據

在DataSet中創建DataTable之後,就可以像對數據庫中的表那樣對DataTable執行操作,如添加、查看、編輯和刪除數據,監視錯誤和事件以及查詢數據等。當修改DataTable中的數據時,可以驗證更改是否準確,並且確定是否可以通過編程方式接受或拒絕更改。

1.插入新行

在創建DataTable並使用列和約束定義其結構後,即可向表中添加新的數據行。

(1)創建一個新行

若要向DataTable添加一新行,首先要聲明一個DataRow類型的變量。當調用NewRow方法時會返回一個新的DataRow對象。然後DataTable根據DataColumnCollection定義的表的結構來創建DataRow對象。

  1. DataRow drNewEmployee = drEmployees.NewRow(); 

(2)填充新行

向DataTable添加了新行之後,可以使用索引或列名操作新行。

  1. DataRow drNewEmployee = drEmployees.NewRow();  
  2. drNewEmployee[0] = 11;  
  3. drNewEmployee[1]="smith";  
  4. drNewEmployee["EmployeeID"] = 11;  
  5. drNewEmployee["EmpName"] = "Smith"

(3)向DataTable追加行

在數據插入到新行後,使用Add方法將該行添加到DataRowCollection中。

  1. dtEmp]oyees.Rows.Add(drNewEmployee); 

(4)使用代碼來創建、填充和追加行

也可以通過將一個Object類型的數組傳遞給Add方法來創建一個新行。

  1. dtEmployees。Rows.Add(New object(){11,"smith"}) 

該方法在表中創建新行,並設置其列值爲對象數組中的值。

注意:數組中的值根據它們在表中出現的順序與列匹配。

2.更新表中的數據

DataRow類爲了在編輯數據時掛起和恢復數據行的狀態提供了3個方法:BeginEdit、EndEdit和CancelEdit方法。當編輯數據時,調用BeginEdit可以掛起任何事件(或異常),使用Items集合指定要修改的數據的列名和新值;使用EndEdit重新恢復任何事件(或異常);使用CancelEdit則可以回滾任何更改和重新激活任何事件或異常。

【實例10-2】  修改表中的數據。

下面演示瞭如何使用BeginEdit方法、Items集合和EndEdit方法。

  1. //獲取Employees表中的第4行數據  
  2. DataRow drEmployee = dtEmployees.Rows[3];  
  3.  
  4. drEmployee.BeginEdit();  
  5.  
  6. drEmployee("EmpName") = "John";  
  7. drEmployee("Title")="Sales";  
  8. drEmployee.EndEdit(); 

3.刪除行

可以使用兩種方法從DataTable對象中刪除DataRow對象:DataRowCollection對象的Remove方法和DataRow對象的Delete方法。Remove方法從DataRowCollection中刪除DataRow;而Delete方法只對刪除的行做標記,通常用於無連接環境中的數據。

(1)Remove方法

如下面的示例代碼所示,DataRowCollection的Remove方法把DataRow當作一個參數並從集合中刪除它。

  1. DataRow drEmployee = dtEmployees. Rows(3);  
  2. dtEmployees.Rows.Remove(drEmployee); 

(2)Delete方法

下面的示例代碼說明了如何調用DataRow的Delete方法將RowState屬性值更改爲Deleted。

  1. drEmployee Delete(); 

4.實例分析

製作一個可以向學生成績數據集中添加數據和刪除數據的窗口,在窗體中創建一個新的數據集Ds_Students,並創建一個表Dt_studentList,表結構如圖10-9所示。

示例窗體設計如圖10-10所示。

 
圖10-9  Dt_studentList結構
 
(點擊查看大圖)圖10-10  示例窗口
"添加"按鈕代碼如下:
  1. private void button1_Click(object sender, System.EventArgs e)  
  2. {  
  3.     //添加一新行  
  4.      DataRow dr = Dt_studentlist.NewRow();  
  5.  
  6.      //向行的列中添加數據  
  7.      dr[0] = t_xh.Text;  
  8.      dr[1] = t_xm.Text;  
  9.      dr[2] = t_bj.Text;  
  10.      dr[3] = t_kc.Text;  
  11.      dr[4] = t_lx.Text;  
  12.      dr[5] = int.Parse(t_cj.Text);  
  13.      dr[6] = int.Parse(t_xh.Text);  
  14.  
  15.      //將新的行添加到DataSet中  
  16.      Dt_studentlist.Rows.Add(dr);  

"刪除"按鈕代碼如下:

  1. private void button2_Click(object sender, System.EventArgs e)  
  2. {  
  3.     //獲取DataGridView上所選要刪除行的行號  
  4.      int index = dataGridView1.SelectedRows[0].Index;  
  5.  
  6.      //找到用戶選定的行  
  7.      DataRow dr = Dt_studentlist.Rows[index];  
  8.  
  9.      //刪除該行  
  10.      dr.Delete();  

【提示】在DataSet中修改數據,不等於在SQL Server數據庫中修改數據。在DataSet中修改數據,相當於在本地內存中的數據庫修改數據,與SQL Server數據庫無關,只有通過SqlDataAdapter將在DataSet中修改的數據更新回SQL Server數據庫,服務器中的數據纔有效。

發佈了6 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章