C DataSet的基本用法

2022-06-24 14:30:13 字數 2460 閱讀 1498

首先我們需要開啟乙個聯結:

string myconnstring = "driver=; dbq=c:/test/test.mdb;";

string strcomm = "select * from userlist";

adoconnection myconnection = new adoconnection(myconnstring);

adodatasetcommand mycomm = new adodatasetcommand(strcomm,myconnection);

這裡我們為了講解方便,只在dataset存入乙個表的內容:

dataset mydataset = new dataset();

mycomm.filldataset(mydataset,"userlist");

此時我們就獲得了乙個擁有userlist表資料的dataset。在講解dataset之前,我們還需要了解dataset的結構下面是dataset的結構樹

dataset

relationscollection

extendedproperties

tablescollection  

datatables  

rows

columns

其它由於我們研究的是datatable,其它的我們暫時不管他們。乙個dataset中包含多個datatable,乙個datatable又包含有多個row,這就是我們操作dataset的基礎啦:)

新增資料

新增一資料,從上面的列表中我們可以看出,其實就是新增一行row,這裡我們也來演示一下如何新增一行資料,我們程式一切以dataset為頂點,呵呵,如 果tablescollection,rowscollection下去的話,還有一些煩人的dt.acceptchanges這些方法的呼叫,很煩人, 還是一次搞定吧。

datarow dr=mydataset.tables["userlist"].newrow();

dr["username"] = "周訊";

dr["remark"] = "100";

dr["comment"] = "漂亮mm";

mydataset.tables["userlist"].rows.add(dr);

第 一行,我們建立乙個新的資料行,它用來儲存我們新加入的資料。然後我們在這個資料行中加入我們需要的資料。dr["username"]表明是對username欄位進行新增,你可以使用dr[1]來新增資訊,但是這需要我們事先知道欄位在資料表的位置,而且在不知道資料表結構的情況很難知道我們 新增的資料的對應情況,所以還是用欄位名為好。

最後我們使用rowscollection的add方法,將我們新建這一行加入到資料表中。

修改資料

知道如何新增資料後,修改資料也是很簡單的事情了.

mydataset.tables["userlist"].rows[0]["username"]="飛刀大哥";

這樣我們就修改了第一行資料中的username欄位。

刪除資料

刪除資料,主要是使用rowscollection提供的delete方法,看下面的程式也是很簡單的事情啦:)

mydataset.tables["userlist"],rows[0].delete();

這一行資料就已經被刪除了。

恢復資料

有時候我們新增/修改資料會出現錯誤,這時候,就需要恢復原來的資料。下面的程式,顯示如何判斷是否有錯誤發生:

if(mydataset.haserrors)

首 先我們檢查dataset中是否有錯誤發生,如果有就使用rejectchanges()方法,恢復dataset中的資料。注意這裡恢復是在dataset中所有表以及表中datarow中的資料,也就是在此交次操作的資料全部恢復。如果我們只需要恢復部分內容,我們可以使用datatable或datarow的rejectchanges(),這裡就不詳細講解了,使用方法和dataset一樣,只是操作的對像不同而已。

探測dataset是否有改動

我們在將dataset送交給資料庫去儲存去,我們需要看看這個dataset是否已經被改動了。如果沒有改動,我們也就沒有必要去修改資料庫了。

if(mydataset.haschanges)

else

更新資料庫

我 們上面的操作,都只是針對dataset的,沒有運算元據庫,但是我們的目的還是要將資料儲存到資料中去,所以我們這裡就需要呼叫datasetcommand的update方法。下面的程式顯示如何將dataset的資料交給資料庫。mycomm.update(mydataset);

很簡單的一句,呵呵。這裡要注意,如果乙個dataset中包含有多個表,而我們只更新乙個,那我們就必須寫明更新的資料表名:

mycomm.update(mydataset,"userlist");

當update方法被呼叫後,datasetcommand會將資料庫中的資料與dataset中的資料相比較,對不相同的地方進行更新。

C DataSet 記憶體中的資料集

dataset 中有多個 datatable datatable 中有多個datacolumn 列名 多個rows 資料行 using system using system.collections.generic using system.componentmodel using system.d...

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...