jdbc之连接池

Posted helloworld2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc之连接池相关的知识,希望对你有一定的参考价值。

第三方数据库连接池DBCP的应用

连接池的原理

1.缓存Connection对象

2.缓存Statement及PreparedStatement

package jdbcdemo2;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

/**
 * @author Administrator
 *第三方数据库连接池DBCP的应用 
 */
public class demo1 {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs   = null;
        
        try {
            InputStream in = 
                    demo1.class.getClassLoader().getResourceAsStream("jdbc.properties");
            Properties prop = new Properties();
            prop.load(in);

            DataSource ds = BasicDataSourceFactory.createDataSource(prop);
            //这里的连接对象不同于DriverManager.getConnection中连接对象,
            //其close方法已经被改造
            con = ds.getConnection();
            pstmt = con.prepareStatement("select * from dog");
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.print(rs.getInt(1) + "\t");
                System.out.print(rs.getString(2) + "\t");
                System.out.print(rs.getInt(3) + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    //关闭存储查询结果的ResultSet对象
                    rs.close();
                }
                if (pstmt != null) {
                     //关闭负责执行SQL命令的Statement对象
                    pstmt.close();
                }
                if (con != null) {
                    //注意:关闭后,将连接返还给连接池,而不是给数据库
                    con.close();
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }

    }
}

 

以上是关于jdbc之连接池的主要内容,如果未能解决你的问题,请参考以下文章

JDBC第三天~JDBC之事务批处理自动生成主键连接池重构设计

5. JDBC之数据库连接池——Part1

5. JDBC之数据库连接池——Part2

JDBC之Druid连接池的使用

SpringBoot系列之Hikari连接池

JAVA保姆式JDBC数据库免费教程之02-连接池技术