• JDBC 学习复习7 学习 Apache 开源DBCP 数据源


    DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
    Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。

    首先导入2个jar包

    • commons-dbcp.jar
    • commons-pool.jar
      这里给出一个我经常用的一个jar包下载的地址 jar包集中地

    建项目导包,开搞!下面直接贴出配置和 代码。

    ##database.properties配置文件
    url=jdbc:mysql://localhost:3306/libweb
    username=root
    password=
    driverClassName=com.mysql.jdbc.Driver
    initialSize=5
    maxActive=50
    maxIdle=20
    minIdle=5
    maxWait=60000
    connectionProperties=userUnicode=true;characterEncodeing=UTF8
    defaultAutoCommit=true
    defaultReadOnly=
    defaultTransactionIsolation=READ_UNCOMMITTED
    
    package dbex.mysql;
    
    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;
    
    /**
     * @ClassName: ApacheDBCP 
     * @Description:apache dbcp的学习使用,使用dbcp的数据库工具类
     * @author penny
     * @date 2017年12月2日 下午10:29:44 
     *
     */
    public class ApacheDBCP {
    
    	/**
    	 * 在Java中每一个数据库连接池实现是java.sql.DataRosurce接口,这里的dbcp也不例外
    	 */
    	private static DataSource ds=null;
    	static{
    		InputStream ins = ApacheDBCP.class.getResourceAsStream("../../database.properties");
    		Properties pro = new Properties();
    		try {
    			System.out.println(ApacheDBCP.class.toString()+":加载配置文件 ");
    			pro.load(ins);
    			ds=BasicDataSourceFactory.createDataSource(pro);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    	/**
    	 * 
    	 * @Title: getConnection 
    	 * @Description: 获取连接
    	 * @param @return 连接对象conn
    	 * @param @throws SQLException    
    	 * @throws
    	 */
    	public static Connection getConnection() throws SQLException{
    		return ds.getConnection();
    	}
    	
    	public void release(Connection conn,PreparedStatement ppst ,ResultSet rs){
    		if(conn!=null){
    			try {
    				conn.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		if(ppst!=null){
    			try {
    				ppst.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		if(rs!=null){
    			try {
    				rs.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	/**
    	 * @throws SQLException 
    	 * @Title: main 
    	 * @Description: 测试 dbcp
    	 * @param @param args    
    	 * @throws
    	 */
    	public static void main(String[] args) throws SQLException {
    		Connection conn=null;
    		PreparedStatement ppst =null;
    		ResultSet rs= null;
    		
    		conn =ApacheDBCP.getConnection();
    		System.out.println(conn);
    		ppst = conn.prepareStatement("select * from user");
    		rs=ppst.executeQuery();
    		while(rs.next()){
    			System.out.println(rs.getInt(1)+"	"+rs.getString(2));
    		}
    	}
    	
    }
    
    

  • 相关阅读:
    如何让Surface RT支持网站的flash
    C# 线程同步
    WPF中Visible设为Collapse时,VisualTreeHelper.GetChildrenCount为0
    Set connectionId threw an exception.
    C# 深化基本概念
    wpf如何获取control template里的元素
    DataGrid当列宽超出当前宽度时,没有数据也恒有滚动条
    利用MEF实现插件机制(可根据输入类型来加载特定dll)
    利用正则表达式类解析SQL语句,达到Worklist兼容各个RIS数据库的目的
    Mysql 创建存储过程 更新表
  • 原文地址:https://www.cnblogs.com/humi/p/7955937.html
Copyright © 2020-2023  润新知