try {
con = ConnectionManager.getConnction();
con.setAutoCommit(false);//false是什么意思
....
pStatement.executeUpdate();
con.commit();//commit是什么意思
con.setAutoCommit(true);//这里又来个true又是什么意思
} catch (SQLException sqlE) {
sqlE.printStackTrace();
try {
con.rollback();//是不是当操作失败的时就回滚呀
} catch (Exception e) {
e.printStackTrace();
}
} finally {
try {
pStatement.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
另外,当用户执行查询操作的时要不要什么事务呀 答:是。
con.commit();是自己手动提交事务
con.setAutoCommit(true);是让JDBC自动提交事务。
con.rollback();是取消提交回滚数据
如果con.setAutoCommit(true),在对数据库操作后,数据已真实的更新到数据库里,不需要再用commit,此时调用con.rollback()也不起用了
如果设成false,那就是JDBC不自动提交,需要手动的使用commit或者rollback来进行提交或者回滚数据.
查询的时候是不需要进行事务控制的,只要在对数据库多个不同数据需要同步处理的时候才需要事务控制.比如银行取款,他必须有一个取款记录和帐户变化记录一起发生,单独发生一个是不行的,这时候就可以设成false,在两个操作都完成以后使用commit来一起提交.如果其中一个出现问题了,那就直接用rollback把两个都进行回滚,以保证数据一直性
阅读(221) | 评论(0) | 转发(0) |