DataSet与DataAdapter

基于集的访问有两类方式,一个是DataSet,该类相当于内存中的数据库,在命名空间System.Data中定义;另外一个类是DataAdapter,该类相当于DataSet和物理数据源之间的桥梁。从本质上讲,DataAdapter类是两个类的结合,因为其有SqlDataAdapter和OleDbDataAdapter 两个版本。

DataSet由大量相关的数据结构组成。DataSet是一个完整的数据集。在DataSet内部,主要可以存储5种对象.

                  DataSet的对象

对    象

功    能

DataTable

使用行、列形式来组织的一个矩型数据集

DataColumn

一个规则的集合,描述决定将什么数据存储到一个DataRow中

DataRow

由单行数据库数据构成的一个数据集合,该对象是实际的数据存储

Constraint

决定能进入DataTable的数据

DataRelation

描述了不同的DataTable之间如何关联

在DataSet内部是一个或多个DataTable的集合。在每个DataRow、DataColumn 和Constraint的集合以及DataRelation的两个集合。DataTable内部的DataRelation集合对应于父关系和子关系,二者建立了DataTable之间的连接。DataSet内部的 DataRelation集合是所有 DataTable中的所有DataRelation的一个聚合视图。

DataSet数据更新

在DataTable 中执行的插入、更新和删除操作并不会自动写回数据库。如果想把更改写回数据库,则需要手动去完成,这个操作由DataAdapter.Update完成。下面的代码演示了如何使用DataSet和DataAdapter对数据库进行更改。

SqlDataAdapter sda=new SqlDataAdapter("select * from student","server=(local); uid=sa;pwd=; database= stu");

//声明SqlCommandBuilder对象,并将其实例化

SqlCommandBuilder builder=new SqlCommandBuilder(sda);

DataSet ds=new DataSet(); //声明一个DataSet对象,并将其实例化

Sda.Fill(ds,"student"); //将student表填充到数据集中

DataTable table=ds.Tables["student"];//插入数据

DataRow row=table.NewRow(); //插入一行

row["stu_id"]="1001"; //该行的一列的值

row["stu_name"]="张强"; //该行另外一列的值

table.Rows.Add(row); //插入一条记录

sda.Update(table); //更新数据

DataAdapter中的UPDATE方法检查传递给表的每一条记录,把自上次插入后的数据写回数据库。如果DataSet中包含了多个被修改的DataTable,就把整个DataSet传递给UPDATE,所有改变会被一次性写回。

DataAdapter对象

DataAdapter(即数据适配器)对象是一种用来充当DataSet对象与实际数据源之间桥梁的对象。DataSet对象是一个非连接的对象,它与数据源无关。而DataAdapter则正好负责填充它并把它的数据提交给一个特定的数据源,它与DataSet配合使用,可以执行新增、查询、修改和删除等多种操作。

DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,以及把内存中的数据写回到一个数据源中。两种情况下使用的数据源可能相同,也可能不相同。而这两种操作分别称作填充(FILL)和更新(UPDATE)。

当SqlDataAdapter对象通过FILL方法填充DataSet对象时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非将MissingSchemaAction属性设置为AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用FillSchema方法,让SqlDataAdapter对象创建DataSet对象的架构,并在用数据填充它之前就将主键信息包括进去

                DataAdapter对象的常用属性及说明

属    性

描    述

DeleteCommand

获取或设置一个语句或存储过程,以从数据集删除记录

InsertCommand

获取或设置一个语句或存储过程,以在数据源中插入新记录

SelectCommand

获取或设置一个语句或存储过程,用于在数据源中选择记录

UpdateBatchSize

获取或设置每次到服务器的往返过程中处理的行数

UpdateCommand

获取或设置一个语句或存储过程,用于更新数据源中的记录

           DataAdapter对象的方法

方    法

描    述

Dispose

删除该对象

Fill

用从源数据读取的数据行填充至DataSet对象中

FillSchema

将一个DataTable加入到指定的DataSet中,并配置表的模式

GetFillParameters

返回一个用于SELECT命令的DataParameter对象组成的数组

Update

在DataSet对象中的数据有所改动后更新数据源。

方法用于更新集合,如同用户已打开“外接程序管理器”对话框一样,或将对象的窗口布局设置为当前窗口布局。

使用UPDATE方法可以用当前窗口布局替换原来存储的窗口布局。

使用DataAdapter填充DataSet的方法是DataAdapter.Fill(),该方法的一个经典代码如下。

//数据库名为stu,用户名为sa,用户密码为空

SqlConnection con=new SqlConnection("server=(local);uid=sa;pwd=;database=stu");

Con.Open();//打开数据库连接

SqlDataAdapter sda=new SqlDataAdapter("select * from student");//查询student表

DataSet ds=new DataSet();

Sda.Fill(ds, "student");//填充数据集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值