Druid连接池的工具类
导入jar包
druid-1.0.9.jar
定义配置文件
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///school
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000
Druid工具类
DruidUtils.java
package com.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
// Druid工具类
public class DruidUtils {
// 定义成员变量
private static DataSource ds;
static {
try {
// 加载配置文件
Properties pro = new Properties();
ClassLoader classLoader = DruidUtils.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream("druid.properties");
pro.load(is);
// 获取连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取连接池
public static DataSource getDataSource() {
return ds;
}
// 获取连接
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
// 释放资源
public static void close(Statement stmt, Connection conn) {
close(null, stmt, conn);
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
// 归还连接
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Druid工具类的测试
DruidDemo.java
package com.datasource.demo;
import com.utils.DruidUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DruidDemo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 获取连接
conn = DruidUtils.getConnection();
// 定义sql
String sql = "insert into student values (? , ?, ?, ?)";
// 获取执行sql的对象
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1,"08005");
pstmt.setString(2, "孙七");
pstmt.setString(3, "男");
pstmt.setInt(4, 18);
// 执行sql
count = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
DruidUtils.close(pstmt, conn);
}
}
}
C3P0连接池的工具类
导入jar包
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
定义配置文件
c3p0-config.xml
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///school</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///school</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
C3P0工具类
C3P0Utils.java
package com.utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class C3P0Utils {
// 定义成员变量
private static DataSource ds;
static {
// 默认加载配置文件
// 获取连接池对象
ds = new ComboPooledDataSource();
}
// 获取连接池
public static DataSource getDataSource() {
return ds;
}
// 获取连接
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
// 释放资源
public static void close(Statement stmt, Connection conn) {
close(null, stmt, conn);
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
// 归还连接
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
C3P0工具类的测试
C3P0Demo.java
package com.datasource.demo;
import com.utils.C3P0Utils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class C3P0Demo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 获取连接
conn = C3P0Utils.getConnection();
// 定义sql
String sql = "select * from student";
// 获取执行sql的对象
pstmt = conn.prepareStatement(sql);
// 执行sql
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("sno") + "--" + rs.getString("sname")
+ "--" + rs.getString("ssex") + "--" + rs.getString("sage"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
C3P0Utils.close(pstmt, conn);
}
}
}
/*
08001--张三--男--18
08002--李四--女--20
08003--王五--男--22
08004--赵六--女--24
08005--孙七--男--18
*/