MySQL创建数据库连接池

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C3P0 数据源

介绍

c3p0是一个开源的jdbc连接池,我们熟悉的Hibernate和Sprint 框架使用的都是该数据源

创建连接池对象

方法1:直接创建对象,设置参数

ComboPooledDataSource cpds = new ComboPooledDataSource();

cpds.setDriverClass("com.mysql.jdbc.Driver");

cpds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc3");

cpds.setUser("root");

cpds.setPassword("root");

cpds.setInitialPoolSize(5);

cpds.setMaxPoolSize(15);

方法2:读取配置文件

ComboPooledDataSource cpds = newComboPooledDataSource("itcast");

配置文件为c3p0-config.xml 该文件需要放在类路径下

5

15

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/jdbc3

root

root

5

15

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/jdbc3

root

root

三、ResultSetMetaData对象

元数据,可以理解为描述数据的数据

jdbc中的元数据是指数据库、表、列的定义信息

ResultSetMetaData对象表示结果集ResultSet对象的元数据

获得该对象:

ResultSetMetaDatametaData = rs.getMetaData();

常用方法:

getColumnCount() 返回resultset对象的列数

getColumnName(int column) 获得指定列的名称getColumnTypeName(int column) 获得指定列的类型

四、jdbc优化

使用jdbc对数据库进行crud操作时,会有很多重复的代码,仔细分析不难发现其实变化的只是其中几行代码

对于cud(增删改)操作,代码几乎完全一样,唯一的区别就是sql语句不同,我们完全可以把相同的代码抽取出来定义在一个工具方法中,然后定义一个参数来接收sql语句

对于r(查询)操作,除SQL语句不同之外,根据操作的实体不同,对ResultSet结果集的处理也有所不相同,因此可义一个query方法,除以参数形式接收变化的SQL语句外,可以使用策略模式由qurey 方法的调用者决定如何把ResultSet中的数据映射到实体对象中

优化后的工具类JdbcUtils

// 通用的增删改方法

public static int update(String sql, Object[]

params) throws SQLException {

Connection conn =null;

PreparedStatementpstmt = null;

ResultSet rs = null;

try {

// 获得连接

conn =getConnection();

// 预编译sql

pstmt =conn.prepareStatement(sql);

// 将参数设置进去

for(int i=0; params!=null&&i

}

// 发送sql

int num = pstmt.executeUpdate();

return num;

} finally {

// 释放资源

release(conn,pstmt, rs);

}

}

// 优化查询

相关文档
最新文档