zoukankan      html  css  js  c++  java
  • 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) + "	");
                    System.out.print(rs.getString(2) + "	");
                    System.out.print(rs.getInt(3) + "
    ");
                }
            } 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();
                }
    
            }
    
        }
    }
  • 相关阅读:
    git 通过 fork 解决代码冲突
    vue-cli3.0 多页面和单页面的配置以及相互之间的切换
    关于切换环境变量的问题( 以vue-cli3.0 为例)
    vue-router 钩子
    Android eMMC 分区详解(转载)
    《PE总结 》– 重定位表(转载)
    Linux 文件系统
    爬虫登录,立FLAG
    ios tweak 开发
    ios app 砸壳
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10810103.html
Copyright © 2011-2022 走看看