两个JDBC连接数据库的工具类

两个JDBC连接数据库的工具类

在以前我看过一些C#的东西,知道C#有一个DBHelper的工具类,各种返回DataTable,DataSet很方便,后来看Java,一直没看到有类似的东西,当然这其中有C#的Sql相关类可以脱离COnnection而存在,JDBC的Sql相关类必须保持Connection打开有关。

后来发现JDBC的连接数据库的工具类只要完成简单的获得Connection,关闭各种Connection、Statement和ResultSet的功能。我也看过、写过这样的类,本来之前以为简单的数据库工具类在多线程下会有问题,所以用ThreadLocal又改了一个,结果测试的时候返现,简单的和用ThreadLocal改的大同小异。因为简单的数据库连接类每次getConnection都会new一个新的出来,多线程下并不会冲突。

下面是这两个类的代码,受限于C#的惯性思维,这两个类依旧命名为DBHelper

1. 使用ThreadLocal的


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


public class BaseDBHelper {
    private static final String userName=YOUR_USER_NAME;
    private static final String passWord=YOUR_PASS_WORD;
    private static final String connectionURL=YOUR_CONNECT_URL;
    private static final String driver="com.mysql.jdbc.Driver";//这里连接的是MySQL数据库
    private static final ThreadLocal<Connection> connection=new ThreadLocal<Connection>();

    public BaseDBHelper(){

    }
    public static Connection getConnection(){
        Connection conn=connection.get();
        if(conn==null){
            try{
                Class.forName(driver);
                conn=DriverManager.getConnection(connectionURL, userName, passWord);
                connection.set(conn);
            }catch(ClassNotFoundException e){
                e.printStackTrace();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        return conn;
    }

    public static void CloseConnection(Connection conn){
        if(conn!=null){
            try {
                conn.close();
                connection.remove();
                conn=null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static  void CloseStatement(PreparedStatement pstmt){
        if(pstmt!=null){
            try{
                pstmt.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void CloseResultSet(ResultSet rs){
        if(rs!=null){
            try{
                rs.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void CloseAll(ResultSet rs,PreparedStatement pstmt,Connection conn){
        CloseResultSet(rs);
        CloseStatement(pstmt);
        CloseConnection(conn);
    }
}

2. 一般的

package com.GraphicModel.DBHelper;

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


public class BaseDBHelper {
    private static final String userName=YOUR_USER_NAME;
    private static final String passWord=YOUR_PASS_WORD;
    private static final String connectionURL=YOUR_CONNECT_URL;
    private static final String driver="com.mysql.jdbc.Driver";//这里连接的是MySQL数据库

    public BaseDBHelper(){

    }
    public static  Connection getConnection(){
        Connection conn=null;
            try{
                Class.forName(driver);
                conn=DriverManager.getConnection(connectionURL, userName, passWord);
            }catch(ClassNotFoundException e){
                e.printStackTrace();
            }catch(SQLException e){
                e.printStackTrace();
        }
        return conn;
    }

    public static void CloseConnection(Connection conn){
        if(conn!=null){
            try {
                conn.close();
                conn=null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static  void CloseStatement(PreparedStatement pstmt){
        if(pstmt!=null){
            try{
                pstmt.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void CloseResultSet(ResultSet rs){
        if(rs!=null){
            try{
                rs.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void CloseAll(ResultSet rs,PreparedStatement pstmt,Connection conn){
        CloseResultSet(rs);
        CloseStatement(pstmt);
        CloseConnection(conn);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值