永发信息网

用SqlDataReader和SqlDataAdapter读取数据有啥区别?

答案:4  悬赏:20  手机版
解决时间 2021-03-29 12:26
  • 提问者网友:末路
  • 2021-03-28 13:32
用SqlDataReader和SqlDataAdapter读取数据有啥区别?
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-03-28 15:08
这个是这样的,SqlDataReader只能用于读,在读的过程中数据库一直保持打开状态,不过读的效率还是可以的

SqlDataAdapter(数据适配器)、DataSet
先将数据取出来放到dataset中,然后就可以关闭数据库了,通过sqldataadapter还可以更新删除数据库中的东西,功能很强大,要好好学习。
像绑定某些数据源之类的话强烈建议用SqlDataAdapter(数据适配器)、DataSet
方法,这样不仅绑定简单而且可以做更新和删除操作(当然用read读出来后在建立连接去删除也是可以的)找本书看看那吧,c#的书现在很多了,我手上都超过三本了
全部回答
  • 1楼网友:千夜
  • 2021-03-28 15:57
reader 具有直连(断开连接之后就查不出来数据了)、只读(无法修改)、仅向前(只能向前读.Read()不能退回来)
相对于reader adapter就灵活多了 断开连接之后还能用 可修改 等等
增删改的时候建议用reader
查询时建议用adapter
  • 2楼网友:西岸风
  • 2021-03-28 15:50
SqlDataAdapter 桥接器 使用 Fill 方法填充 DataSet 对象并从数据库断开连接
SqlDataReader 只读数据读取器,保持与数据库的持续连接,只读取数据而不能更改,无需创建 DataSet 对象
  • 3楼网友:青灯有味
  • 2021-03-28 15:13
若要创建 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 中的数据)来提供这一桥接。
当 SqlDataAdapter 填充 DataSet 时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非 MissingSchemaAction 属性设置为 AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema,让 SqlDataAdapter 创建 DataSet 的架构,并在用数据填充它之前就将主键信息包括进去。有关更多信息,请参见向 DataSet 添加现有约束。
SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用,以便在连接到 SQL Server 数据库时提高性能。
SqlDataAdapter 还包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 属性,以便于数据的加载和更新。
当创建 SqlDataAdapter 的实例时,读/写属性将被设置为初始值。

参考资料:MSDN

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯