视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
DBCP数据库连接池的使用
2020-11-09 15:46:12 责编:小采
文档


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 <= obj.length; i++) {
	pstmt.setObject(i, obj[i - 1]);
	}
	int i = pstmt.executeUpdate();
	if (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 < ids.length; i++) {
	pstmt.setObject(1, ids[i]);
	System.out.println(sql + "---------------" + ids[i]);
	pstmt.addBatch();
	}
	int[] num = pstmt.executeBatch(); // 批量执行
	for (int i = 0; i < num.length; i++) {
	if (num[i] == 0) {
	try {
	conn.rollback(); // 进行事务回滚
	return flag;
	} catch (SQLException ex) {
	ex.printStackTrace();
	}
	}
	}
	conn.commit();// 提交事务
	flag = true;
	} catch (SQLException e) {

	e.printStackTrace();
	} finally {
	release(rs, pstmt);
	}
	return flag;
	}

	// 根据传入的表的名称,和每页数据得到传入表的所有的页数
	// tableName:::::操作的数据表名称
	// pagesize::::::每页显示的信息条数
	public static Integer getCountPage(String tableName, Integer pagesize) {
	Integer countPage = 0;
	String sql = "select count(*) as c from " + tableName;
	Connection conn = Pool_dbcp.getConn();
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	conn = Pool_dbcp.getConn();
	try {
	pstmt = conn.prepareStatement(sql);
	rs = pstmt.executeQuery();
	if (rs.next()) {
	int countRecord = rs.getInt("c");
	countPage = countRecord % pagesize == 0 ? countRecord
	/ pagesize : countRecord / pagesize + 1;
	}
	} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	} finally {
	Pool_dbcp.release(rs, pstmt);
	}
	return countPage;
	}

}

下载本文
显示全文
专题