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
*/