[已解决问题] 这样的SqlDataReader需要事务吗?
提问时间: 2008-07-15 15:39
悬赏分:10 浏览:154 次

strSQL.Append("INSERT INTO LineItem..."); 

conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL.Append("SELECT @ID, @ERR").ToString();


using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {
rdr.Read();
// If the error count is not zero throw an exception
if (rdr.GetInt32(1) != 0)
throw new ApplicationException("DATA INTEGRITY ERROR ON ORDER INSERT - ROLLBACK ISSUED");
}

上面代码中SQL语句既有数据插入,又有数据查询,在此情况下需不需要事务(以上是MS示例代码)?如果需要该怎样修改?谢谢。

提问者:冀中 - 初学一级
最佳答案
这里不需要加,只有一个更新语句时是不需要的,查询在任何情况下都不需要加事务 更新、删除、修改,只有当几个操作需要同时进行,只进行其中之一会引起数据不一致的情况下才需要加事务 比如当用户发表评论时,你还要更新页面的PV,插入评论和更新PV虽然是两个有可能需要事务的操作,但因为两个互不影响,所以也是不需要加的 但如果是发表评论和更新用户表里的评论数,这时候就要加事务,因为无论评论插入成功数量没有更新,还是数据更新评论没有插入成功,都会引起数据不一致
2008/7/16 13:55:42 回答者:丁学
其它回答(3)
新增的都要加事务吧。你是分布式的吗?
1个月前   回答者:5207 - 菜鸟二级
不需要加事务,因为事务是为了保证数据的完整性;而这里你对数据的操作,只有一个insert;不会发生中途失败,导致数据不完整的问题。
1个月前   回答者:玉开 - 大侠五级
如果只有一条语句更新数据库的话,确实是不用事务!
1个月前   回答者:随风逝去(叶进) - 初学一级
评论
1个月前   冀中 :
各位好:
1.不是分布式系统。
2.主要是我考虑strSQL语句中有“insert into ....;SELECT @ID, @ERR”;Microsfoft公司的这个示例中是没有加事务的,但是我还是有点担心,所以请各位帮确定一下。
1个月前   丁学 :
这个不用加的,这个和事务没有关系,事务只有需要往数据里写或更新东西时才有可能用到
1个月前   冀中 :
谢谢各位!
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关链接