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

我想建一个SQLHelper类的一个方法以查询数据库的数据书上写的有用SqlDataReader(数据读取器)和SqlDataAdapter(数据适配器)、DataSet... 我想建一个SQLHelper类的一个方法以查询数据库的数据
书上写的有用SqlDataReader(数据读取器)和SqlDataAdapter(数据适配器)、DataSet(数据集)这两种方法
貌似两者的效果都一样,所以想请教一下各位,应该怎么写比较合适
如果可以的话也可以把你们的代码发给我参考参考~谢谢了
展开
 我来答
江小右
推荐于2018-05-01 · TA获得超过6928个赞
知道小有建树答主
回答量:1195
采纳率:0%
帮助的人:832万
展开全部
这个是这样的,SqlDataReader只能用于读,在读的过程中数据库一直保持打开状态,不过读的效率还是可以的

SqlDataAdapter(数据适配器)、DataSet
先将数据取出来放到dataset中,然后就可以关闭数据库了,通过sqldataadapter还可以更新删除数据库中的东西,功能很强大,要好好学习。
像绑定某些数据源之类的话强烈建议用SqlDataAdapter(数据适配器)、DataSet
方法,这样不仅绑定简单而且可以做更新和删除操作(当然用read读出来后在建立连接去删除也是可以的)找本书看看那吧,c#的书现在很多了,我手上都超过三本了
剑剑56
2009-09-02 · TA获得超过429个赞
知道小有建树答主
回答量:780
采纳率:0%
帮助的人:466万
展开全部
若要创建 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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Abel_Zhou_13
2009-09-02 · TA获得超过124个赞
知道答主
回答量:70
采纳率:0%
帮助的人:60.1万
展开全部
reader 具有直连(断开连接之后就查不出来数据了)、只读(无法修改)、仅向前(只能向前读.Read()不能退回来)
相对于reader adapter就灵活多了 断开连接之后还能用 可修改 等等
增删改的时候建议用reader
查询时建议用adapter
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fateyt
2009-09-02 · TA获得超过164个赞
知道小有建树答主
回答量:578
采纳率:0%
帮助的人:0
展开全部
SqlDataAdapter 桥接器 使用 Fill 方法填充 DataSet 对象并从数据库断开连接
SqlDataReader 只读数据读取器,保持与数据库的持续连接,只读取数据而不能更改,无需创建 DataSet 对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式