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();
                }
    
            }
    
        }
    }
  • 相关阅读:
    codevs 1766 装果子
    codevs 1415 比那名居天子
    codevs 1388 砍树
    codevs 1373 射命丸文
    codevs 2867 天平系统3
    codevs 2866 天平系统2
    codevs 2865 天平系统1
    codevs 2832 6个朋友
    广搜优化题目总结
    Codeforces Round #578 (Div. 2)
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10810103.html
Copyright © 2011-2022 走看看