親密接觸ASP.Net(10)
2024-07-10 12:55:25
供稿:網友
接上一節,我們這一節主要計論如何使用dataset,在數據庫中增加、修改、刪除一個數
據。
首先我們需要打開一個聯結,我們的數據庫還是用上一節的吧:)
string myconnstring = "driver={microsoft access driver (*.mdb)};
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中包含多個datat
able,一個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.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)
{
mydataset.rejectchanges();
}
首先我們檢查dataset中是否有錯誤發生,如果有就使用rejectchanges()方法,恢復dat
aset中的數據。注意這里恢復是在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中的數據相比較
,對不相同的地方進行更新。
對于dataset的操作,我們這里只講這么多,其實dataset的方法和屬性有很多,功能也
很全,我想現在這里的所講的功能,對一般的操作已經足夠了。