親密接觸ASP.Net(9)
發(fā)表時(shí)間:2024-06-13 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]我們繼續(xù)前面的內(nèi)容,呵呵,這次主要是講DataSet的強(qiáng)大功能啦:)。上次吹了大家的泡泡(說(shuō)話不算數(shù)的意思,湖南人都能聽(tīng)懂吧:)),這次一定不能再食言了:)在一個(gè)DataSet中儲(chǔ)存多個(gè)數(shù)據(jù)表我們?cè)贏SP中很多人習(xí)慣于使用RecordSet對(duì)象來(lái)操作數(shù)據(jù)庫(kù),但是RecordSet有一個(gè)的缺點(diǎn)就是一...
我們繼續(xù)前面的內(nèi)容,呵呵,這次主要是講DataSet的強(qiáng)大功能啦:)。上次吹了大家的泡泡(說(shuō)話不算數(shù)的意思,湖南人都能聽(tīng)懂吧:)),這次一定不能再食言了:)
在一個(gè)DataSet中儲(chǔ)存多個(gè)數(shù)據(jù)表
我們?cè)贏SP中很多人習(xí)慣于使用RecordSet對(duì)象來(lái)操作數(shù)據(jù)庫(kù),但是RecordSet有一個(gè)的缺點(diǎn)就是一個(gè)RecordSet只能儲(chǔ)存一個(gè)數(shù)據(jù)表,當(dāng)我們需要操作多個(gè)表時(shí),不得不在多個(gè)RecordSet中來(lái)回操作,雖然這些在使用習(xí)慣后也沒(méi)有什么,但是對(duì)一個(gè)新手來(lái)說(shuō),這也是一個(gè)很麻煩人的事情。光是那些變量名就可以搞渾你,現(xiàn)在好了,在ASP.Net中,只需要一個(gè)DataSet就可以搞定一切。大大的方便了我們的程序。我們還是老樣子,先看一段程序,再來(lái)細(xì)細(xì)講解。
<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.ADO" %>
<Script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
//聯(lián)結(jié)語(yǔ)句
string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";
string strComm1 = "select * from UserList";
string strComm2 = "select * from BookList";
//打開(kāi)一個(gè)聯(lián)結(jié)
ADOConnection MyConnection = new ADOConnection(MyConnString);
//打開(kāi)兩個(gè)DataSetCommand
ADODataSetCommand MyComm1 = new ADODataSetCommand(strComm1,MyConnection);
ADODataSetCommand MyComm2 = new ADODataSetCommand(strComm2,MyConnection);
DataSet MyDataSet = new DataSet();
//把UserList,BookList表存入DataSet
MyComm1.FillDataSet(MyDataSet,"UserList");
MyComm2.FillDataSet(MyDataSet,"BookList");
DataGrid1.DataSource = MyDataSet.Tables["UserList"].DefaultView;
DataGrid2.DataSource = MyDataSet.Tables["BookList"].DefaultView;
DataGrid1.DataBind();
DataGrid2.DataBind();
}
</script>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td>
<ASP:DataGrid id="DataGrid1" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
/>
</td>
<td>
<ASP:DataGrid id="DataGrid2" runat="server"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
/>
</td>
</tr>
</table>
</body>
</html>
在上面的例子中,我們打開(kāi)了一個(gè)名為test.mdb的Access數(shù)據(jù)庫(kù),然后把他其中的兩個(gè)表"UserList"和"BookList"使用兩個(gè)DataGrid控件顯示出來(lái)。顯示的圖片如下:
圖9-1
我們現(xiàn)在來(lái)分析一下代碼:
string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";
string strComm1 = "select * from UserList";
string strComm2 = "select * from BookList";
ADOConnection MyConnection = new ADOConnection(MyConnString);
ADODataSetCommand MyComm1 = new ADODataSetCommand(strComm1,MyConnection);
ADODataSetCommand MyComm2 = new ADODataSetCommand(strComm2,MyConnection);
這些都只是在作一些準(zhǔn)備工作,打開(kāi)一個(gè)聯(lián)結(jié),并且打開(kāi)兩個(gè)DataSetCommand取得兩個(gè)表的數(shù)據(jù)。
DataSet MyDataSet = new DataSet();
這是我們程序的關(guān)鍵之地,這里打開(kāi)了我們要操作的DataSet對(duì)象。下面我們就需要將數(shù)據(jù)表的內(nèi)容填入DataSet了。
MyComm1.FillDataSet(MyDataSet,"UserList");
MyComm2.FillDataSet(MyDataSet,"BookList");
這里是我們今天的主要內(nèi)容。前面的幾章曾經(jīng)說(shuō)過(guò),在一個(gè)DataSet中可以包含多種數(shù)據(jù),這里我們是往這個(gè)名為MyDataSet的DataSet中存放了兩個(gè)數(shù)據(jù)庫(kù)表,其實(shí)只要愿意,我們還可以在里面插入XML數(shù)據(jù),而且他們是不會(huì)出現(xiàn)沖突的。大家可以放心使用,呵呵。
再下面的代碼,就是把MyDataSet的數(shù)據(jù)傳送給DataGrid控件顯示。這里就不多說(shuō)了。
這里我們只是簡(jiǎn)單的說(shuō)了一下DataSet能存放多個(gè)數(shù)據(jù)表的功能,大家看看好像沒(méi)有什么特別的。這里看起來(lái)確實(shí)好像沒(méi)有什么特別的功能,但是如果配上DataSet中的修改、添加、刪除功能,我們操作數(shù)據(jù)庫(kù)就變得很簡(jiǎn)單。我們可以先將數(shù)據(jù)庫(kù)讀入DataSet,然后在DataSet中修改數(shù)據(jù),如果改得覺(jué)得不滿意,我們還可以使用RejectChanges方法全面恢復(fù),最后一并交給去數(shù)據(jù)庫(kù)去更新。
下一節(jié),我們?cè)賮?lái)講解,如何使用DataSet來(lái)添加,修改,刪除數(shù)據(jù)。