DataSet的用法

原创 2007年10月11日 15:52:00
dataset使用详解
2007-08-11 21:13

在一个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=D:/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控件显示出来。
  我们现在来分析一下代码:
string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:/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和DataAdapter来操作数据库
MyConnection.Open(); //打开数据库
MyCommand.Connection = MyConnection; //设置Command
MyCommand. CommandText = “select * from [admin]”; //设置Command
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); //定义OleDbDataAdapte对象
MyDataAdapter.SelectCommand = MyCommand; //设置OleDbDataAdapte对象的SelectCommand属性
System.Data.DataSet MyDataSet = new System.Data.DataSet(); //定义DataSet
MyDataAdapter.Fill(MyDataSet,"admin"); //通过OleDbDataAdapte对象的SelectCommand属性填充MyDataSet
MyConnection.Close(); //关闭数据库

整个过程分以下几步:
1.建立数据库连接
2.建立OleDbDataAdapter对象!
3.实例化OleDbDataAdapter对象!
4.建立一个DataSet对象,执行SQL语句得到的表添加到其中
5.关闭数据库连接
通过上面的步骤我们就可以使用DataBind将DataSet中的数据绑定到特定的控件上了!
  我们利用DataSet和DataAdapter能够更加方便的对数据库进行操作,如何通过OleDbDataAdapter来执行数据库的操作?我们只需要对DataSet中的数据进行增加、删除、修改等操作,然后在将DataSet提交给数据库即可。
//利用利用DataSet和DataAdapter操作数据库
public Boolean DoDB()
{
MyConnection.Open(); //打开数据库
MyCommand.Connection = MyConnection;
MyCommand. CommandText = “select * from admin”;
OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter();
MyDataAdapter.SelectCommand = MyCommand;
System.Data.DataSet MyDataSet = new System.Data.DataSet();
MyDataAdapter.Fill(MyDataSet,"admin"); //通过OleDbDataAdapte对象的SelectCommand属性填充MyDataSet

OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);//关联DataSet和数据库的操作的,必不可少
foreach(DataRow dr in MyDataSet.Tables["Admin"].Rows)
{
if(dr["Admin_Code"].ToString().Trim().Equals("a"))
{
dr.Delete(); //删除DataSet 中的行
}
}
MyDataSet.Tables["Admin"].Rows[0][0] = "ss";//更新DataSet中第一行第一列的值
string [] dd = new String[3]{"a","b","v"};
MyDataSet.Tables["Admin"].Rows.Add(dd);//增加一行
MyDataAdapter.Update(MyDataSet,"Admin");//将DataSet中”Admin”表中的数据提交给数据库,完成数据库的更新
MyConnection.Close();//关闭数据库
}

这个程序同Command的delete、insert、update例程是执行同样的功能的,我这里改成了用MyDataAdapter来达到同样的效果!

要通过MyDataAdapter执行对数据库的操作,要有下面的几步:

1. 建立数据库连接MyConnection
2. 实例化OleDbDataAdapter对象!
3. 建立一个DataSet对象,并把执行select语句得到的记录添加到其中
4. 建立OleDbCommandBuilder对象! 并让它与我们前面的OleDbDataAdapter对象关联!语句如下:OleDbCommandBuilder MyCommandBuild = new OleDbCommandBuilder(MyDataAdapter);
5. 对DataSet中包含表的特定记录进行增加、删除、修改

6. 执行OleDbDataAdapter对象的Update命令更新数据库,语句如下: MyDataAdapter.Update(ds,"notes");
7. 关闭数据库连接

总结:
DataSet是ADO.NET中非常重要的内容,也是ADO.NET和ADO的区别的一个重要表现,特别适合成批的数据操作,也是数据棒定的重要来源。OleDbDataAdapter是DataSet和数据源之间建立联系的一个桥梁,要熟练的使用DataSet我们需要熟练的掌握OleDbDataAdapter。


 

js中的dataset问题

昨天刷了IFE的任务,第十六个任务,任务详情是这样的:任务描述 参考以下示例代码,用户输入城市名称和空气质量指数后,点击“确认添加”按钮后,就会将用户的输入在进行验证后,添加到下面的表格中,新增一行...
  • yh0205039
  • yh0205039
  • 2016年03月29日 10:00
  • 3158

C#中DataSet、SqlDataAdapter的使用-关于数据库操作

DataSet表示数据在内存中的缓存。 我的理解是,在内存中的数据表,需要引用using System.Data; SqlDataAdapter表示用于填充 DataSet 和更新 SQL Serve...
  • xubaifu1997
  • xubaifu1997
  • 2016年07月03日 20:38
  • 4197

浅谈ASP.net中的DataSet对象

在我们对数据库进行操作的时候,总是先把数据从数据库取出来,然后放到一个"容器"中,再通过这个"容器"取出数据显示在前台,而充当这种容器的角色中当属DataSet是最为普遍和重要的了,可以说DataSe...
  • u010792238
  • u010792238
  • 2014年03月07日 13:41
  • 1850

最全面的DataSet用法详细

  • 2017年08月14日 20:51
  • 6.14MB
  • 下载

DataSet用法详细

  • 2012年08月27日 11:32
  • 1.42MB
  • 下载

DataSet用法详解

  • 2012年08月16日 14:09
  • 223KB
  • 下载

C#中DataSet的用法(很详细)

  • 2010年10月15日 13:56
  • 47KB
  • 下载

ireport使用 参数Parameter的用法和dataset的用法 table的用法

  • 2013年11月15日 14:32
  • 1.32MB
  • 下载

DataSet用法详细

  • 2010年12月18日 09:32
  • 65KB
  • 下载

对ExecuteNonQuery,ExecuteScalar,DataSet 进行封装(params可变参数的用法)Sqlparameter

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D...
  • Fanbin168
  • Fanbin168
  • 2014年03月14日 22:52
  • 2536
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataSet的用法
举报原因:
原因补充:

(最多只允许输入30个字)