String sqlStr = "";
sqlStr="delete from table1 where col1='a'";
sqlStr=sqlStr+" update table1 set col1='b' where col2='c'";
sqlStr=sqlStr+" insert into table1 (col1,col2) select 'aaaa','sdfsd'";
sqlStr=sqlStr+" delete from table1 where col2='sd'";
问题是,我要把上面的字符串送到mssql2000中执行,当上面4条语句中,有一条执行错误,或者有一条执行后影响0条记录,就全部回滚,并可以知道是哪几条语句出错,或者哪几条语句影响为0条记录,不行的话,得到第一条出错的语句也行。
注意:有一条语句执行错误,或者有一条语句执行后影响为0条记录,影响0条记录的意思,就是,比如当delete时,没有delete任何一条记录,也就是没找到记录。在上面的情况下,全部数据回滚,是全部回滚!
有点啰嗦。谢谢各位大虾。

解决方案 »

  1.   

    楼主的这个sql写法最好是使用 StringBuffer append。这样比较好。可以使用存储过程控制。
      

  2.   

    按照我的理解,应该可以的呀,可以通过JAVA,获得数据库的返回信息,再判断是否回滚。你可以用查询分析器试试,delete from table1 where 1=2,他会返回“(所影响的行数为 0 行)”,难道JAVA不能得到这样的返回信息吗?据我了解通过sqlserver的API就可以实现这样的需求,我在delphi中做过。只是不知道JAVA如何做!至于conn.rollback();,这就看你如何控制了,只要得到中间的判断,怎么不可以回滚!?难道conn的回滚操作,只针对特定的、内置的条件才能回滚吗?如果这样的话,要conn.rollback()有何用,直接做系统设置,告诉系统,你需不需要回滚就行了嘛,系统自动帮你回滚就行了嘛。
      

  3.   

    javaAlpha:谢谢你的帮助,你的建议,我试试。