使用数据库连接池,其实就是让QueryRunner对象在创建时得到一个数据源(数据库连接池),使用不同的数据库连接池,只需要为QueryRunner提供其自身的数据源即可!也就是DataSource
那么一旦QueryRunner在创建时有了数据源,那么在执行sql,操作数据库时,就会自动从数据源中获取连接对象Connection!
1、dbcp连接池
apache出品的连接池,apache出品,必属精品。
缺一不可
之前的数据库连接需要把数据库连接的选项配置给连接对象。但是使用数据库连接池,只需要为池子配置连接选项即可,那么池子内部的连接池对象就会自动携带这些连接信息!
导入dbcp连接池的配置文件:
将dbcp.properties文件导入到项目工程的src文件夹中:
打开配置文件,修改配置信息:
切记配置信息的关键字不能错,不要修改,只改值,不要改关键字!!!
构建dbcp的工具类,来为QueryRunner提供dbcp的数据源!这种方式简单,因为可以自动将配置文件中的配置信息,设置给数据源,也就是连接池对象!
package com.offcn.dbcp;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
/**
* 此类的作用就是为QueryRunner提供dbcp连接池数据源的
* @author Administrator
*
*/
public class DBCPUtils {
private static DataSource dataSource = null;
//初始化数据源对象
static {
//构建配置文件
Properties properties = new Properties();
FileInputStream fStream = null;
try {
//通过输入流读取dbcp连接池的配置文件
fStream = new FileInputStream("src/dbcp.properties");
//将通过流读取到的连接池配置信息加载到属性文件对象中
properties.load(fStream);
//使用dbcp特定数据源生成的方法来创建dbcp连接池的数据源对象
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fStream != null) {
try {
fStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//返回数据源的方法
public static DataSource getDataSource() {
return dataSource;
}
}
当然也可以手动创建数据源,手动为数据源设置配置信息,这样就比较麻烦:
BasicDataSource这个类就是dbcp的数据源类,通过set+对应配置信息的方法,即可完成对数据源的信息配置!
使用dbcp+dbutils 完成数据库操作的代码:
2、druid连接池
阿里巴巴出品,用户群体少
导包:
记住,add to build path
将druid的配置文件druid.properties导入到src目录下:
打开配置配置文件,修改信息:
书写druid的工具类,为QueryRunner提供数据源
package com.offcn.druid;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
/**
* 此类专门为QueryRunner创建提供数据源
* @author Administrator
*
*/
public class DruidUtils {
//声明数据源
private static DataSource dataSource = null;
//加载数据源
static {
//通过类加载器,获取输入流,可以直接找到src下的文件,所以路径直接写文件名即可
InputStream iStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
//创建属性文件对象
Properties properties = new Properties();
try {
//加载流中的数据
properties.load(iStream);
//使用druid工具包中的数据源生成方法来为数据源赋值
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (iStream != null) {
try {
iStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//返回数据源的方法
public static DataSource getDataSource() {
return dataSource;
}
}
使用druid + dbutils完成数据库操作
3、c3p0连接池
这个极其推荐使用,用户群体极多,因为其简单!!!
导包:
add to build path
导入c3p0的配置文件:
(1) 、c3p0的配置文件,名称一定要命名为c3p0.properties
(2) 、c3p0的配置文件,一定要导入到src目录下
如果以上两个条件都满足,那么就会自动加载配置文件!!!!!!!就是c3p0的数据源自动就有了配置文件中的信息!!!
使用c3p0 + dbutils 完成数据库操作: