用jdbc进行事务处理,遇到一个问题 很郁闷

jaysea 2007-11-03 01:28:50
下面是源代码,很简单,可就是在编译的时候出错误:
D:\temp\Test.java:25: 未报告的异常 java.sql.SQLException;必须对其进行捕捉或声明以便抛出
conn.rollback();
^
1 错误
大虾们,救命呀!!!!
源代码:

package hit;

import java.sql.*;

public class Test {

public static void main(String[] args) {

Connection conn = null;
Statement stmt = null;
try{

conn = DriverManager.getConnection("jdbc:odbc:hit","sa","sa"); //连接数据库
stmt = conn.createStatement();

String sql1 ="insert into student values('0000','zzzz',23)";
String sql2 = "insert into student values('6789','mmmm',99)";
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
conn.commit();

}catch(SQLException e){
conn.rollback(); //出现异常,事务回滚
e.printStackTrace();
}

}
}
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaysea 2007-11-11
  • 打赏
  • 举报
回复
太感谢了!!!!
是你说的那个问题。
谢谢~~~~~
lixin199036061 2007-11-04
  • 打赏
  • 举报
回复
好象在使用这个之前还要设一下的

jdbc默认的是自动提交

要先
conn.setAutoCommit(0);//方法名好象差一下,几不住

不这样的话数据库那不会认的
jaysea 2007-11-04
  • 打赏
  • 举报
回复
有没有人用过数据库中的事务处理,帮帮我呀!!!!
跪求.....
jaysea 2007-11-03
  • 打赏
  • 举报
回复
我在catch中加了try--catch,可以编译过去了
但是好像起不到会滚得效果
比如我执行3个SQL语句(插入3条记录)
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
stmt.executeUpdate(sql3);

我让sql1可以插入,sql2不能插入(有重复键),sql3可以插入
程序在执行sql2的时候会抛异常,按理说应该会滚,就是sql1插入的记录应该被会滚
不应该出现在数据库中,
可是我发现数据库中有记录

这种情况该怎么办呀?。。。
jaysea 2007-11-03
  • 打赏
  • 举报
回复
我看了很多网上的例子都是这么写的
既然conn.rollback()也会抛出异常的, 那它抛出的异常在哪捕获,怎么捕获呀?
是在catch中再try--catch吗?
能不能给各详细点的代码?。。
houname 2007-11-03
  • 打赏
  • 举报
回复
conn.rollback()也会抛出异常的;
FredWorks 2007-11-03
  • 打赏
  • 举报
回复
错误信息已经很清楚了,就是Connection对象的rollback()会抛出SQLException异常的,这个异常不是RuntimeException的子类,必须要捕获的。在try...catch 块的catch中执行的代码,如果会抛出非RuntimeException,也是需要捕获处理的

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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