急急急:有条件的事务执行怎么写?

qingzhen 2004-12-16 10:59:07

是想实现这样的目标,事务在rows大于1的情况下不提交(或夭折),而小于等于1时,事务正常执行。可下面的语句总出错,怎么回事??
try
{
testCommand.ExecuteNonQuery();
if (rows>1)
{
//testTrans.Rollback();
reward=reward+"主事务回滚";
}
else
{
testTrans.Commit();
reward=reward+"主事务成功!";
}
}
catch(Exception e)
{
//testTrans.Rollback();
reward=reward+"主事务失败!"+Convert.ToString(e.Message);
}
finally
{
testConnection.Close();
}

...全文
156 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingzhen 2004-12-23
  • 打赏
  • 举报
回复
lh1979(rocket)的主意真好!谢谢
lh1979 2004-12-22
  • 打赏
  • 举报
回复
实际上你可以这样变通阿,如果row>1的时候不起动事务,如果小于1的时候启动事务,不就解决你的问题了吗
qingzhen 2004-12-22
  • 打赏
  • 举报
回复
真的就没辄了??
qingzhen 2004-12-17
  • 打赏
  • 举报
回复
在rows>1的时候,我就是不想让事务执行,即不写提交的语句也不写回滚的语句。

在这个事务后面我还有一些其他的数据库操作,而rows<=1的时候,后面的数据库操作就没有问题。
当rows>1的时候,后面的语句就会提示布式事务已完成。请将此会话登记到新事务或 NULL 事务中。

我想可能是前面的事务没有正确结束的问题,可就是不知怎么写??都急死人了!
lily1265 2004-12-17
  • 打赏
  • 举报
回复
是不是rows>1的时候没启动事务,就直接回滚了!
或testCommand.ExecuteNonQuery所执行的语句出错了吧?
这点代码我也看不出什么了:)
Frewin 2004-12-17
  • 打赏
  • 举报
回复
ExecuteNonQuery 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。
是否应该改成
int rows =testCommand.ExecuteNonQuery
Frewin 2004-12-17
  • 打赏
  • 举报
回复
执行 testCommand.ExecuteNonQuery 他返回什么,在我的理解中,一般调用Sqlcommand的ExecuteNonQuery是在执行数据库的insert,update,delete ,而不是select
didoleo 2004-12-17
  • 打赏
  • 举报
回复
可是这是java代码
lh1979 2004-12-17
  • 打赏
  • 举报
回复
不可能的,系统生成一个事务的时候@@tranacount加1,commit后-1,直到为0,如果直接rollback的话@@trancount也为0,如果不为0的话,系统启动异常处理,提示事务没有完成
artoksxb 2004-12-17
  • 打赏
  • 举报
回复
这是JAVA的异常处理!
qingzhen 2004-12-16
  • 打赏
  • 举报
回复
仁兄说的好深奥啊,能否赐些代码???先谢过了
lh1979 2004-12-16
  • 打赏
  • 举报
回复
事务启动后,只有执行成功和执行失败,好像没有不提交的阿,如果你不提交的话,如果设为隐式提交,系统会自动提交,如果没有设,报错

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧