C# DataSet、DataTable、DataRow、DataColumn 資料集應用大全

來源:互聯網
上載者:User

轉自:http://www.cnblogs.com/szytwo/archive/2012/03/21/2409536.html

一、資料集基本應用

1.表格新增記錄

方式一:利用BindingSource的AddNew

//新增記錄,推薦使用,游標位置處於當前新增記錄,且正處理編輯狀態DataRow thisRow = ((DataRowView)usersBindingSource.AddNew()).Row;thisRow["OID"] = 5;thisRow["CNAME"] = "新增使用者";thisRow["sex"] = "m";

方式二:利用DataTable的NewRow

//新增記錄(不建議使用,因為這種方式Rows.Add時並不處於編輯狀態時會受約束影響,且新增時游標不會自動移動該條記錄) DataRow thisRow = userDataSet.Tables["Users"].NewRow();thisRow["OID"] = 5;thisRow["CNAME"] = "新增使用者";thisRow["sex"] = "m";userDataSet.Tables["Users"].Rows.Add(thisRow);

2.表格刪除記錄

方式一:利用BindingSource的RemoveCurrent 

if (usersBindingSource.Current != null)   //刪除目前記錄,推薦使用   usersBindingSource.RemoveCurrent();

方式二:利用DataRowCollection的Remove 

//刪除目前記錄,不推薦使用,這種方式不會記錄到RowState中,儲存時不會更新DataRow thisRow = getCurrentDataRow(usersBindingSource);if (thisRow != null)   userDataSet.Tables["Users"].Rows.Remove(thisRow);

方式三:利用DataRow的Delete 

//刪除目前記錄,不推薦使用,BindingSource可以更簡潔DataRow thisRow = getCurrentDataRow(usersBindingSource);if (thisRow != null)   thisRow.Delete();

3.表格修改記錄

方式一:利用DataRowObject[列名]直接修改 

DataRow thisRow = getCurrentDataRow(usersBindingSource);if (thisRow != null){   thisRow.BeginEdit();   thisRow["CNAME"] = "修改的名稱";   thisRow.EndEdit();}

4.表格尋找和篩選記錄

方式一:利用DataRowCollection.find尋找 

DataColumn[] keys = new DataColumn[1];keys[0] = userDataSet.Tables["Users"].Columns["OID"];userDataSet.Tables["Users"].PrimaryKey = keys;DataRow findRow = userDataSet.Tables["Users"].Rows.Find("1");
if (findRow == null){   MessageBox.Show("沒有找到");}else{   MessageBox.Show("成功找到,CNAME = " + findRow["CNAME"]);} 

方式二:利用BindingSource.find尋找 

int i = usersBindingSource.Find("OID", "1");if (i >= 0)   MessageBox.Show("成功找到,CNAME = " +   userDataSet.Tables["users"].Rows[i]["CNAME"]);

方式三:利用DataTable.Select獲得DataRow數組 

DataRow[] AryDr = userDataSet.Tables["users"].Select("OID > 1");for (int i = 0; i < AryDr.Length; i++){    DataRow dr = AryDr[i];    MessageBox.Show(Convert.ToString((int)dr["OID"]));}

5.表格記錄的移動

方式一:採用BindingSource的方法或position屬性實現。 

//指定定位到哪一行,Position不會隨表格列排序而變化,0不一定就是表格的第一行usersBindingSource.Position = 0;//移動到上一條,對於表格列排序後,上一條不定是介面顯示表格的上一條usersBindingSource.MovePrevious();usersBindingSource.MoveNext();//移動到下一條usersBindingSource.MoveFirst();usersBindingSource.MoveLast();

6.表格的過濾

方式一:利用BindingSource的Filter來實現 

usersBindingSource.Filter = "OID > 1";

7.資料集清空

方式一:利用DataTable.Clear(),注意這種不會保留刪除狀態,儲存時不會真正刪除 

userDataSet.Tables["users"].Clear();

方式二:利用DataTable.Rows.Clear刪除,注意這種不會保留刪除狀態,儲存時不會真正刪除 

userDataSet.Tables["users"].Rows.Clear();

方式三:利用BindingSource.RemoveCurrent迴圈刪除全部記錄,這種就會保留刪除狀態。 

while (usersBindingSource.Current != null)      usersBindingSource.RemoveCurrent();

8.資料集資料和結構的複製

方式一:整個資料集的複製 

DataSet copyDS = userDataSet.Copy();

方式二:只複製單個表 

DataSet copyDS = new DataSet();copyDS.Tables.Add(userDataSet.Tables["users"].Copy());

方式三:只複製資料集的結構 

copyDS = userDataSet.Clone();MessageBox.Show(copyDS.Tables["users"].Rows.Count.ToString());

9.擷取髒資料

方式一:整個資料集的髒資料 

copyDS = userDataSet.GetChanges();

方式二:擷取單個表的髒資料 

DataTable dt = userDataSet.Tables["users"].GetChanges();

10.資料集的資料合併

方式一:整個資料集的DataSet.Merge合并 

ds.Merge(userDataSet);

方式二:單個表的DataTable.Merge合并 

ds.Merge(userDataSet.Tables["users"
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.