JDBC数据库连接和事务的管理 一个JDBC基本操作封装类的编写

Java使用JDBC建立数据库连接时,主要使用到了两个类:

java.sql.Connection; java.sql.DriverManager;

创建一个连接的基本过程为:

//注册驱动名
Class.forName(“com.mysql.jdbc.Driver”);
String url = “jdbc:mysql://localhost:3306/databaseName”;
String username = “root”;
String password = “root”;
//获取数据库连接
Connection conn =DriverManager.getConnection(url,username,password);

同时也需要做一些事务的管理:

事务的管理主要通过Connection类的一些方法来实现:

//开启事务
conn.setAutoCommit(false);
//提交事务
conn.commit();
//事务回滚
conn.rollback();

在使用完连接之后一定记得关闭资源:

Connection: conn.close(); Statement: ps.close; ResultSet: rs.close();

以下是一个JDBC基本操作的封装类:

public class DbUtil {

/\*\*
 \* 获取数据库连接
 \* @return
 */
public static Connection getConnection(){
    Connection conn = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/StudentManage";
        String username = "root";
        String password = "m123";
        conn =DriverManager.getConnection(url,username,password);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return conn;
}

/\*\*
 \* 关闭数据库连接
 */
public static void close(Connection conn){
    if(conn != null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }            
    }
}

/\*\*
 \* 关闭Statement
 */
public static void close(Statement ps){
    if(ps != null){
        try {
            ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

/\*\*
 \* 关闭ResultSet
 */
public static void close(ResultSet rs){
    if(rs != null){
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

/\*\*
 \* 开启事务
 */
public static void beginTransaction(Connection conn){
    try{
        if(conn != null){
            if(conn.getAutoCommit()){
                conn.setAutoCommit(false);
            }
        }
    } catch(SQLException e){
        e.printStackTrace();
    }
}
/\*\*
 \* 提交事务
 */
public static void commitTransaction(Connection conn){
    try{
        if(conn != null){
            conn.commit();
        }
    } catch(SQLException e){
        e.printStackTrace();
    }
}
/\*\*
 \* 事务回滚
 */
public static void rollbackTransaction(Connection conn){
    try{
        if(conn != null){
            conn.rollback();
        }
    }catch(SQLException e){
        e.printStackTrace();
    }
}
/\*\*
 \* 重置事务开启状态
 */
public static void resetConnection(Connection conn){
    try{
        if(conn != null){
            if(conn.getAutoCommit()){
                conn.setAutoCommit(false);
            } else {
                conn.setAutoCommit(true);
            }
        }
    } catch(SQLException e){
        e.printStackTrace();
    }
}

}

arthinking wechat
欢迎关注itzhai公众号