try {
DBUtil.beginTranaction();
dao.Add(emp);
DBUtil.commit();
} catch (Exception e) {
e.printStackTrace();
try {
DBUtil.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("系统繁忙,请稍后再试");
}开始事务的代码:public static void beginTranaction() throws SQLException{
try {
Connection conn = getConnection();
System.out.println("到底运行到这里没有");
conn.setAutoCommit(false);
System.out.println("到底运行到这里没有false");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("启动事务失败");
throw e;
}
}
add方法的代码: public void Add(Employee e) throws SQLException {
Connection conn=null;
PreparedStatement prep=null;
try{
conn=DBUtil.getConnection();
String sqlAdd="insert into t_emp(name,salary,age) values(?,?,?)";
prep=conn.prepareStatement(sqlAdd);
prep.setString(1,e.getName());
prep.setDouble(2,e.getSalary());
prep.setInt(3,e.getAge());
int row=prep.executeUpdate();
//System.out.println(row);
}catch(SQLException ex){
ex.printStackTrace();
throw ex;
}finally{
if(prep!=null){
prep.close();
}
DBUtil.close();
System.out.println("add的整个连接已经关闭提交了为什么还没有插入进去");
}
}我知道出错了,将add方法里面的DBUtil.close()去掉就能正常插入数据,但是我觉得不去的话也可以插入数据呀?异常是报的后面一句 ,DBUtil.commit();
为什么啊 求各位大神
DBUtil.beginTranaction();
dao.Add(emp);
DBUtil.commit();
} catch (Exception e) {
e.printStackTrace();
try {
DBUtil.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("系统繁忙,请稍后再试");
}开始事务的代码:public static void beginTranaction() throws SQLException{
try {
Connection conn = getConnection();
System.out.println("到底运行到这里没有");
conn.setAutoCommit(false);
System.out.println("到底运行到这里没有false");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("启动事务失败");
throw e;
}
}
add方法的代码: public void Add(Employee e) throws SQLException {
Connection conn=null;
PreparedStatement prep=null;
try{
conn=DBUtil.getConnection();
String sqlAdd="insert into t_emp(name,salary,age) values(?,?,?)";
prep=conn.prepareStatement(sqlAdd);
prep.setString(1,e.getName());
prep.setDouble(2,e.getSalary());
prep.setInt(3,e.getAge());
int row=prep.executeUpdate();
//System.out.println(row);
}catch(SQLException ex){
ex.printStackTrace();
throw ex;
}finally{
if(prep!=null){
prep.close();
}
DBUtil.close();
System.out.println("add的整个连接已经关闭提交了为什么还没有插入进去");
}
}我知道出错了,将add方法里面的DBUtil.close()去掉就能正常插入数据,但是我觉得不去的话也可以插入数据呀?异常是报的后面一句 ,DBUtil.commit();
为什么啊 求各位大神
DBUtil这个对象关闭掉了。。
这个对象就等同于没用的可以被垃圾回收机制给清掉的。。
然后你又想调用 DBUtil去执行 commit();操作,可能么
if(prep!=null){
prep.close();
}
DBUtil.close();
System.out.println("add的整个连接已经关闭提交了为什么还没有插入进去");
}
这两行的确没出错,你将DBUtil.close();这边执行完了,那到了下一步的
DBUtil.commit();自然就出错了
一般默认关闭的时候都会提交,但是也不一定。
我从来没用过 DBUtil,这个我猜是你们自己写的或者是额外的jar包里面的吧。
一般执行close方法里面都会有commit语句,所以才会提交,而如果你的close方法里面没有commit语句的话,自然不会提交了。。另外我看你还添加了异常处理,异常处理中添加了那是滚回的方法吧。DBUtil.rollback();
也就是说出异常的话数据是不是就回滚了?
一般默认关闭的时候都会提交,但是也不一定。
我从来没用过 DBUtil,这个我猜是你们自己写的或者是额外的jar包里面的吧。
一般执行close方法里面都会有commit语句,所以才会提交,而如果你的close方法里面没有commit语句的话,自然不会提交了。。另外我看你还添加了异常处理,异常处理中添加了那是滚回的方法吧。DBUtil.rollback();
也就是说出异常的话数据是不是就回滚了?对啊 好像是这样的···大哥 小弟读书浪费了四年光阴,现在在培训机构··一片迷茫···学的是java web 求指教啊···
一般默认关闭的时候都会提交,但是也不一定。
我从来没用过 DBUtil,这个我猜是你们自己写的或者是额外的jar包里面的吧。
一般执行close方法里面都会有commit语句,所以才会提交,而如果你的close方法里面没有commit语句的话,自然不会提交了。。另外我看你还添加了异常处理,异常处理中添加了那是滚回的方法吧。DBUtil.rollback();
也就是说出异常的话数据是不是就回滚了?对啊 好像是这样的···大哥 小弟读书浪费了四年光阴,现在在培训机构··一片迷茫···学的是java web 求指教啊···
我其实和你一样,浪费了三年,最后一年才发愤图强开始学习的。。
有空看看我的经历吧,
http://blog.csdn.net/rzleilei/article/details/12689999