zoukankan      html  css  js  c++  java
  • Jdbc 事务

    package com.j1;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.PreparedStatement;
    
    
    public class JdbcTest1 {
    
    public void test1(){
    Connection conn=null;
    PreparedStatement smt=null;
    try {
    conn = JdbcUnit.getConnection();
    conn.setAutoCommit(false);//开启事物
    smt= (PreparedStatement) conn.prepareStatement("");
    smt.executeUpdate();
    conn.prepareStatement("");
    conn.commit();//提交事物
    } catch (Exception e) {
    try {
    conn.rollback();
    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    e.printStackTrace();
    }finally{
    //释放资源
    JdbcUnit.release(null, smt, conn);
    }
    
    }
    
    }
    
    //公用类
    
    package com.j1;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    import org.apache.taglibs.standard.tag.common.fmt.BundleSupport;
    
     
    
    public class JdbcUnit {
    private static String clazzName=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;
    
    //读取配置文件
    static{
    
    ResourceBundle bundle=ResourceBundle.getBundle("dbinfo");
    clazzName=bundle.getString("clazzName");
    url=bundle.getString("url");
    username=bundle.getString("username");
    password=bundle.getString("password");
    }
    public static Connection getConnection(){
    
    
    loadDriver();
    try {
    return DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    throw new RuntimeException(e);
    }
    
    }
    private static void loadDriver() {
    try {
    Class.forName(clazzName);
    
    
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    
    
    }
    public static void release(ResultSet rs, Statement stmt, Connection conn){
    
    if(rs!=null){
    try {
    rs.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    rs=null;
    }
    if(stmt!=null){
    try {
    stmt.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    stmt=null;
    }
    if(conn!=null){
    try {
    conn.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    conn=null;
    }
    
    }
    }
    
     
    
     
    
    /**
    
    事务为同一个Connnection对象
    try catch时尽量抓到最大Exception
    
    */
  • 相关阅读:
    python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)
    python 全栈开发,Day73(django多表添加,基于对象的跨表查询)
    python 全栈开发,Day72(昨日作业讲解,昨日内容回顾,Django多表创建)
    bootstrap源码里的function加上了+号
    php get set方法深入理解
    20160519
    NetStatusEvent info对象的状态或错误情况的属性
    php 代码大全
    常见HTTP状态(304,200等)
    php strtotime 和 date 日期操作
  • 原文地址:https://www.cnblogs.com/wangchuanfu/p/5561451.html
Copyright © 2011-2022 走看看