首页 新闻 会员 周边

这样的SqlDataReader需要事务吗?

0
悬赏园豆:10 [已解决问题] 解决于 2008-07-21 15:11
<P>strSQL.Append("INSERT INTO LineItem...");&nbsp;</P> <P>conn.Open();<BR>cmd.Connection = conn;<BR>cmd.CommandType = CommandType.Text;<BR>cmd.CommandText = strSQL.Append("SELECT @ID, @ERR").ToString();</P> <P><BR>using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {<BR>rdr.Read();<BR>// If the error count is not zero throw an exception<BR>if (rdr.GetInt32(1) != 0)<BR>throw new ApplicationException("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");<BR>}</P> <P>上面代码中SQL语句既有数据插入,又有数据查询,在此情况下需不需要事务(以上是MS示例代码)?如果需要该怎样修改?谢谢。</P>
Shapley的主页 Shapley | 初学一级 | 园豆:55
提问于:2008-07-15 15:39
< >
分享
最佳答案
0
这里不需要加,只有一个更新语句时是不需要的,查询在任何情况下都不需要加事务 更新、删除、修改,只有当几个操作需要同时进行,只进行其中之一会引起数据不一致的情况下才需要加事务 比如当用户发表评论时,你还要更新页面的PV,插入评论和更新PV虽然是两个有可能需要事务的操作,但因为两个互不影响,所以也是不需要加的 但如果是发表评论和更新用户表里的评论数,这时候就要加事务,因为无论评论插入成功数量没有更新,还是数据更新评论没有插入成功,都会引起数据不一致
丁学 | 专家六级 |园豆:18730 | 2008-07-16 13:55
其他回答(3)
0
新增的都要加事务吧。你是分布式的吗?
5207 | 园豆:9 (初学一级) | 2008-07-15 15:55
0
不需要加事务,因为事务是为了保证数据的完整性;而这里你对数据的操作,只有一个insert;不会发生中途失败,导致数据不完整的问题。
玉开 | 园豆:8822 (大侠五级) | 2008-07-15 16:10
0
如果只有一条语句更新数据库的话,确实是不用事务!
随风逝去(叶进) | 园豆:227 (菜鸟二级) | 2008-07-15 20:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册