亲密接触ASP.Net(9)
程序员文章站
2022-08-15 09:06:31
我们继续前面的内容,呵呵,这次主要是讲dataset的强大功能啦:)。上次吹了大家的泡泡(说话不算数的意思,湖南人都能听懂吧:)),这次一定不能再食言了:)
在一个datas...
我们继续前面的内容,呵呵,这次主要是讲dataset的强大功能啦:)。上次吹了大家的泡泡(说话不算数的意思,湖南人都能听懂吧:)),这次一定不能再食言了:)
在一个dataset中储存多个数据表
我们在asp中很多人习惯于使用recordset对象来操作,但是recordset有一个的缺点就是一个recordset只能储存一个数据表,当我们需要操作多个表时,不得不在多个recordset中来回操作,虽然这些在使用习惯后也没有什么,但是对一个新手来说,这也是一个很麻烦人的事情。光是那些变量名就可以搞浑你,现在好了,在asp.net中,只需要一个dataset就可以搞定一切。大大的方便了我们的程序。我们还是老样子,先看一段程序,再来细细讲解。
<% @ 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)
{
//联结语句
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);
//打开两个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>
在上面的例子中,我们打开了一个名为test.mdb的access数据库,然后把他其中的两个表"userlist"和"booklist"使用两个datagrid控件显示出来。显示的图片如下:
图9-1
我们现在来分析一下代码:
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);
这些都只是在作一些准备工作,打开一个联结,并且打开两个datasetcommand取得两个表的数据。
dataset mydataset = new dataset();
这是我们程序的关键之地,这里打开了我们要操作的dataset对象。下面我们就需要将数据表的内容填入dataset了。
mycomm1.filldataset(mydataset,"userlist");
mycomm2.filldataset(mydataset,"booklist");
这里是我们今天的主要内容。前面的几章曾经说过,在一个dataset中可以包含多种数据,这里我们是往这个名为mydataset的dataset中存放了两个数据库表,其实只要愿意,我们还可以在里面插入xml数据,而且他们是不会出现冲突的。大家可以放心使用,呵呵。
再下面的代码,就是把mydataset的数据传送给datagrid控件显示。这里就不多说了。
这里我们只是简单的说了一下dataset能存放多个数据表的功能,大家看看好像没有什么特别的。这里看起来确实好像没有什么特别的功能,但是如果配上dataset中的修改、添加、删除功能,我们操作数据库就变得很简单。我们可以先将数据库读入dataset,然后在dataset中修改数据,如果改得觉得不满意,我们还可以使用rejectchanges方法全面恢复,最后一并交给去数据库去更新。
下一节,我们再来讲解,如何使用dataset来添加,修改,删除数据。
在一个dataset中储存多个数据表
我们在asp中很多人习惯于使用recordset对象来操作,但是recordset有一个的缺点就是一个recordset只能储存一个数据表,当我们需要操作多个表时,不得不在多个recordset中来回操作,虽然这些在使用习惯后也没有什么,但是对一个新手来说,这也是一个很麻烦人的事情。光是那些变量名就可以搞浑你,现在好了,在asp.net中,只需要一个dataset就可以搞定一切。大大的方便了我们的程序。我们还是老样子,先看一段程序,再来细细讲解。
<% @ 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)
{
//联结语句
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);
//打开两个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>
在上面的例子中,我们打开了一个名为test.mdb的access数据库,然后把他其中的两个表"userlist"和"booklist"使用两个datagrid控件显示出来。显示的图片如下:
图9-1
我们现在来分析一下代码:
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);
这些都只是在作一些准备工作,打开一个联结,并且打开两个datasetcommand取得两个表的数据。
dataset mydataset = new dataset();
这是我们程序的关键之地,这里打开了我们要操作的dataset对象。下面我们就需要将数据表的内容填入dataset了。
mycomm1.filldataset(mydataset,"userlist");
mycomm2.filldataset(mydataset,"booklist");
这里是我们今天的主要内容。前面的几章曾经说过,在一个dataset中可以包含多种数据,这里我们是往这个名为mydataset的dataset中存放了两个数据库表,其实只要愿意,我们还可以在里面插入xml数据,而且他们是不会出现冲突的。大家可以放心使用,呵呵。
再下面的代码,就是把mydataset的数据传送给datagrid控件显示。这里就不多说了。
这里我们只是简单的说了一下dataset能存放多个数据表的功能,大家看看好像没有什么特别的。这里看起来确实好像没有什么特别的功能,但是如果配上dataset中的修改、添加、删除功能,我们操作数据库就变得很简单。我们可以先将数据库读入dataset,然后在dataset中修改数据,如果改得觉得不满意,我们还可以使用rejectchanges方法全面恢复,最后一并交给去数据库去更新。
下一节,我们再来讲解,如何使用dataset来添加,修改,删除数据。
上一篇: 看出来了很迫切