我是靠谱客的博主 震动鞋子,最近开发中收集的这篇文章主要介绍JDBC的事务控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.类ConnectionFactory

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class ConnectionFactory {
	public static   String url;
	public  static  String driver;
	static
	{
	    Properties pp = new Properties();
	    InputStream   inStream=Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
	  // InputStream   inStream=ConnectionFactory.class.getClassLoader().getResourceAsStream("config.properties");
	    //两种读入数据流的方式;
	    try {
			pp.load(inStream);
			url= pp.getProperty("url");
			driver =pp.getProperty("driver");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static Connection getConnection()
	{
		Connection conn=null;
		try {
			Class.forName(driver);
			 conn= DriverManager.getConnection(url);
			 
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	 return conn;
	}
    public static void close(Connection conn,Statement st, ResultSet rs) throws SQLException
    {
        if(conn!=null) conn.close();
        if(st!=null) st.close();
        if(rs!=null)  rs.close();
    }
     public static void close(Connection conn,Statement st) throws SQLException
     {
    	 close(conn,st,null);
     }
}

2.主类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import zhangJDBC.ConnectionFactory;

public class Transatiob {
public static void main(String[] args) {
	/*
	 1.设置事务的提交方式:非自动提交
	 conn.setAutoCommit(false);
	 2.将需要添加的事务的代码放在try,catch中
	 try{
	 //需要添加事物的业务代码
	 }catch(Exception e)
	 {
	 }
	 
	 3.在try块中添加提交操作,表示操作无异常,提交事务
	 conn.commit();//正常流程,提交事务
	 
	 4.在catch块中添加回滚事务,表示操作出现异常,撤销事务
	 conn.rollback();
	 
	 5.设置事务提交的方式为自动提交
	 conn.setAutoCommit(true);
	 
	 在JDBC处理事务的过程中,也可以设置事物的回滚带你,当事务回滚的时候,回滚到保存点
	 
	 Savepoint savepoint = conn.setSacepoint();
	 roll.rollback(savepoint);
	 st.releaseSavepoint(savepoint);//记住释放save point
	  
	 */
	
	Connection conn=ConnectionFactory.getConnection();
	PreparedStatement pst = null;
	String sql="insert into stuinfo(name,content,image) values(?,null,null)";
	String sql1="delete from student where id=1";
	
	try {
		//设置是否自动提交事务为false
		conn.setAutoCommit(false);
		
		pst= conn.prepareStatement(sql);
		pst.setString(1, "测试事务");
		System.out.println("第一句语句执行。。。。。");
		pst.executeUpdate();
		
		pst= conn.prepareStatement(sql1);
		System.out.println("第二句语句执行。。。");
		pst.executeUpdate();
		//2.提交事务
		conn.commit();
		System.out.println("提交事务");
		
		
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		//如果出现异常则回滚事务
		try {
			conn.rollback();
			System.out.println("回退事务。。。");
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		e.printStackTrace();
	}finally{
		try {
			conn.setAutoCommit(true);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			ConnectionFactory.close(conn, pst);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
}


最后

以上就是震动鞋子为你收集整理的JDBC的事务控制的全部内容,希望文章能够帮你解决JDBC的事务控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部