在网上查了很多,没找到一个称心如意的,根据自己写的数据库连接,做了些改动,写了个连接池。它就是个工具。
首先需要导一个jar包我的是c3p0-0.9.1.jar现在应该有更高版本的。
在写连接池之前首先将c3p0jar包导入项目。
这是我自己写的一个工具类,把它放在了我自定义的包package com.jdbc.tool中
工具名字叫DBHelper()。可能还有不完善的地方,大家多多指教。
代码如下:
package com.jdbc.tool;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBHelper {
private static ComboPooledDataSource cpds=new ComboPooledDataSource();
static {
try {
// 驱动器
cpds.setDriverClass("oracle.jdbc.OracleDriver");
// 数据库url
cpds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:ORCL");
//用户名
cpds.setUser("sa");
//密码
cpds.setPassword("sa");
//初始化连接池的大小
cpds.setInitialPoolSize(30);
//最小连接数
cpds.setMinPoolSize(20);
//最大连接数
cpds.setMaxPoolSize(100);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 用于数据库的链接
* @return 返回Connection
*/
public static Connection getConnection(){
try {
return cpds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 用于关闭数据库的关闭
* @param rs ResultSet对象
* @param st Statement对象
* @param con Connection对象
*/
public static void closeJDBC(ResultSet rs,Statement st,Connection con){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//这个方式是用来获取指定表明的列对应JAVA中的数据类型,和数据库连接无关,我只是当作一个小工具来用。
/**
* 用于获取指定表明的列对应JAVA中的数据类型。
* @param tablename 指定的表名
* @return 列数据类型的数组
*/
public Class[] getTypeOfJava(String tablename){
Connection con=DBHelper.getConnection();
if(con==null){
return null;
}
Statement st=null;
ResultSet rs=null;
Class[] types=null;
try {
st=con.createStatement();
rs=st.executeQuery("select * from "+tablename);
int count=rs.getMetaData().getColumnCount();
types=new Class[count];
for (int i = 0; i < types.length; i++) {
types[i]=Class.forName(rs.getMetaData().getColumnClassName(i+1));
}
return types;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBHelper.closeJDBC(rs, st, con);
}
return null;
}
}