欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

亲密接触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来添加,修改,删除数据。