您的位置:首页 > 数据库

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

2016-10-18 15:49 351 查看

两个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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: