DBCP数据库连接池的使用
程序员文章站
2022-05-14 14:40:51
...
package tk.dong.connectionPool;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import jav
package tk.dong.connectionPool; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; public class Pool_dbcp { // 首先要导入包commons-pool.jar和commons-dbcp-1.4.jar // 声明数据源 private static DataSource dataSource; private static PreparedStatement pstmt; private static ResultSet rs; static { // 将配置文件以输入流的形式读入 InputStream inputStream = Pool_dbcp.class.getClassLoader() .getResourceAsStream("dbcp.properties"); // 创建属性操作的对象 Properties properties = new Properties(); try { // 将配置文件读入 properties.load(inputStream); // 创建基础的数据源处理工厂类的对象 BasicDataSourceFactory basicDataSourceFactory = new BasicDataSourceFactory(); // 通过基础的数据处理工厂创建出数据源 dataSource = basicDataSourceFactory.createDataSource(properties); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 创建返回连接对象的方法 public static Connection getConn() { try { return dataSource.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void release(ResultSet rs, PreparedStatement pstmt) { // 释放结果集 if (rs != null) { try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 释放准备语句 if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // 更新数据的操作增,删,改要用到的封装方法 public static boolean upDate(String sql, Object[] obj) { boolean flag = false; try { // 准备语句的创建,带有sql命令的对象 pstmt = getConn().prepareStatement(sql); for (int i = 1; i 0) { flag = true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { release(rs, pstmt); } return flag; } // 进行批量删除处理 public static boolean updateBatchDel(String sql, Object[] ids) { boolean flag = false; Connection conn = getConn(); PreparedStatement pstmt = null; ResultSet rs = null; try { conn.setAutoCommit(false); pstmt = conn.prepareStatement(sql); for (int i = 0; i
推荐阅读