2004-3-26+ 向DataSet填充多个数据表

以前写asp程序的时候,如果遇到一个页面内要调用多个数据表的情况,那就麻烦大了,需要不断的改变recordset,而现在有了DataSet,一切都不一样啦。通俗一点说,DataSet就是一个容器,里面装的就是数据表(当然,数据表里面又装着数据),既然是容器了,自然可以往里面放很多的东西啦。
我们知道,往DataSet里面装东西的时候要用到DataAdapter对象的Fill()方法,如果要装很多东西呢?要用到DataAdapter的CommandText属性来解决。我们先来看看怎么创建一个新的DataAdapter
OleDbDataAdapter ada=new OleDbDataAdapter(strsql,conn);
其中strsql是sql查询语句,而conn是与数据库的连接,这就好象是通过conn连接数据库,然后根据sql语句把数据“锁定”,最后是Fill()方法把数据装进DataSet。而这个sql语句我们可以通过ada.SelectCommand.CommandText来获得,也就是说,如果我们改变CommandText的值,那ada锁定的数据也会相应的改变,那最后装入DataSet的数据也会不同,然后我们分别为不同的数据取不同的表名就ok啦。
下面是程序示例:
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>
<script language="c#" runat="server">
private void Page_Load(Object sender,System.EventArgs e){
String connstr=ConfigurationSettings.AppSettings["color"];
OleDbConnection conn=new OleDbConnection(connstr);
String sql="select * from cb0102";
DataSet ds=new DataSet("sy");//建立一个dataset对象的实例
OleDbDataAdapter ada=new OleDbDataAdapter(sql,conn);//建立dataadapter对象的实例,这个是一个数据适配器,用于填充数据
ada.Fill(ds,"dtmember");//向ds里填充一个名为dtmember的数据表,里面的数据就是sql语句查询的结果
dg1.DataSource=ds.Tables["dtmember"];//指定数据源,这里用了Tables数据集并指定名称来引用数据
dg1.DataBind();
ada.SelectCommand.CommandText="select * from member";//改变CommandText的值
ada.Fill(ds,"dtmember2");//向ds里再填充一个名为dtmember2的数据表
dg2.DataSource=ds.Tables["dtmember2"];
dg2.DataBind();
}
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>dataset对象的应用1</title>
</head>
<body>
<form runat="server">

<asp:datagrid id="dg2" runat="server"/>
<asp:datagrid id="dg1" runat="server"/>
</form>
</body>
</html>
在进一步说,如果你取一样的表名,那你会得到一个混合的数据表,这个表里面的数据就是原来两个数据表的集合。这个你可以自己试试,某些时候也是很有用哦。

 

posted on 2006-06-26 13:36  Notus|南色的风  阅读(1162)  评论(0编辑  收藏  举报