请教:两种显示数据集合方式的区别SqlDataReader 和SqlDataAdapter
方式1:SqlConnection conn = db.Creatconn();
//db.creatconn是在DB类里的连接数据库方法
conn.Open();
SqlCommand cmd = new SqlCommand("select EmployeeID,LastName,FirstName from employees",conn);
SqlDataReader sdr = cmd.ExecuteReader();
方式2:
SqlConnection conn = db.Creatconn();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand("select EmployeeID,LastName,FirstName from employees", conn);
DataSet ds = new DataSet();
sda.Fill(ds, "emp"); --------------------编程问答-------------------- SqlDataReader 类提供一种从 SQL Server 数据库读取行的只进流的方式。若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为 SqlDataReader 服务,对 SqlConnection 无法执行任何其他操作,只能将其关闭。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索输出参数。
SqlDataReader 的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。当 SqlDataReader 关闭后,只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问 RecordsAffected 属性,但是请始终在返回 RecordsAffected 的值之前调用 Close,以保证返回精确的值。
SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器,用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill(它可更改 DataSet 中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet 中的数据)来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行,Update 方易做图确定已对其执行的更改的类型(Insert、Update 或 Delete)。根据更改类型,执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非 MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema,让 SqlDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。 --------------------编程问答-------------------- SqlDataReader 连接的 单向向前的
SqlDataAdapter主要是构造dataset对象 dataset是非连接的(将数据一次性读出后放于内存中) --------------------编程问答-------------------- 第一种方式,是基于连接的方式,要求与数据库是一直连着的,而且数据集(查询的结果),放在一个SqlDataReader的流里。只能从头(第一条记录)依次只读访问里面的内容(比如显示)。
第二种方式,是基于非连接的方式,从数据库种把结果读出来后,就不一定跟数据库是连着的,打开和关闭连接都由系统自动维持。结果存放在客户端机器的内存里,DateSet相当于数据库服务器在客户端内存的一个映像,DataSet支持添加删除修改,排序等,
如果觉得有价值,就给两分,谢谢 --------------------编程问答-------------------- 主要问题是这几个数据控件看书没搞的太明白:
SqlDataAdapter-一个数据库到本地集合的“变压器”
SqlDataReader-只读,向前的方式
DataSet-一个本地的数据集合
现在有点晕,学习中。。。。
望指点一二,谢谢
--------------------编程问答-------------------- 上面说得很清楚了
--------------------编程问答-------------------- 1楼那位真厉害,不过肯定不是自己写的,从哪个资料里copy的吧,不过也说明人家见多识广。学习了。
补充:.NET技术 , ASP.NET