JDBC工具类的改进
我在之前的文章中写过一个JDBC的工具类,随着学习的深入,发现我们还可以利用连接池来改进我们自己写的工具类。之前工具类的文章!!!!
使用c3p0连接池改进后的JDBC工具类:(使用c3p0连接池的话需要引入他的jar包)
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.*;
/**
* JDBC 工具类
*/
public class JDBCUtils2 {
//创建一个连接池:但是这个连接池只需要创建一次即可。
private static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
/*
获得连接的方法
*/
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
/*
获得连接池
*/
public static DataSource getDataSource() {
return dataSource;
}
/*
释放资源的方法
*/
public static void release(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void release(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
测试类:
import JDBCdemo1.JDBCUtils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class c3p0demo02 {
public static void main(String[] args) {
/*
使用新的工具类测试
*/
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
//获得连接:从连接池中获取
//从连接池中获得连接
conn = JDBCUtils2.getConnection();
//编写SQL
String sql = "select * from student";
//预编译sql
pstmt = conn.prepareStatement(sql);
//执行sql
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getString("sex"));
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(rs,pstmt,conn);
}
}
}