JDBC事务处理

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC事务处理相关的知识,希望对你有一定的参考价值。

在数据库操作中,一项事务是由一条或者多条数据库的SQL语句组成一个不可分割的工作单元,只有当事务中所有操作都正常完成,整个事务才能被提交到数据库中,如果一项操作没有完成,则整个事务会被撤销。例如我们的银行转账业务。

针对JDBC处理事务的操作,在Connection接口中,提供了三个相关的方法,具体如下。
setAutoCommit(boolean autoCommit)
设置是否自动提交事务。
commit()
提交事务。
rollback()
撤销事务。
我们来演示一下银行转账业务的事务
数据库操作语言;
update accout set money=money-200 where name=“zhangsan”;
update accout set money=money+200 where name=“lisi”;
假设我们创建了一个表accout,属性包括ID,name,money。
然后我们插入数据;
insert into accout (name,money)values(‘aaa’,1000);
insert into accout (name,money)values(‘bbb’,1000);
下面是操作代码
我们使用JDBCUtils工具类,来快速的连接我们的mysql数据库。
public class example{
public static void main(String [] args){
String outaccout=“aaa”;
String inaccout=“bbb”;
double amount=200;
Connection conn=null;
PreparedStatement pstmt1=null;
PreparedStatement pstmt2=null;
try{
conn=JDBCUtils.getConnection();
conn.SetAutoCommit(false);
String sql =“update accout set money=money-? where name=? and money>=200”;
pstmt1=conn.prepareStatement(sql);
pstmt1.setDouble(1,amout);
pstmt1.setString(2,outaccout);
//转账转入200类似上面的转出,这里就不写代码了。

conn.commit();
System.out.println(“成功”)
}catch(Exception){
try{
conn.rollback();
System.out.println(“失败”)
}catch(SQLException e1){
e1.printStackTrace();


finally{
if(pstmt1!=null){
try{
pstmt1.close();
}catch(SQLException){
e.printStackTrace();

pstmt1=null;

if()//pstmt2同pstmt1一样,这里就不写了。
if(conn!=null)//也类似同时就不写了
主要是关闭资源,防止浪费空间。


以上是关于JDBC事务处理的主要内容,如果未能解决你的问题,请参考以下文章

Spring学习5-Spring整合JDBC及其事务处理(注解方式)

Mybatis事务处理

使用普通 JDBC 在 DAO 或服务层中进行事务处理

事务管理

关于django出现重复点击,多事务处理

网页显示无法打开JDBC连接事务;嵌套异常java.sql.SQLException:无法连接、 如何处理这种问题