zoukankan      html  css  js  c++  java
  • DBCP数据库连接池

    为什么要使用DBCP数据库连接池?

    因为我们使用JDBC连接数据库的时候,每次操作数据库都需进行Connection连接,每次操作之后,还需要我们关闭连接,

    这样会很耗费资源,同时也不便于管理。

    我们使用DBCP连接池来管理Connection,它可以重复使用Connection。

    Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。

    这样应用程序可以方便的切换不同厂商的连接池!

    常见的连接池:DBCP、C3P0。

    2.DBCP连接池的使用:

    导入jar包:

    3.编写连接池工具

    连接数据库表的工具类, 采用DBCP连接池的方式来完成,Java中提供了一个连接池的规则接口 :

    DataSource : 它是java中提供的连接池,作为 DriverManager 工具的替代项。在DBCP包中提供了DataSource接口的实现类,

    我们要用的具体的连接池 BasicDataSource类

    public class JDBCUtils {
        public static final String DRIVER = "com.mysql.jdbc.Driver";
        public static final String URL = "jdbc:mysql://localhost:3306/daydb";
        public static final String USERNAME = "root";
        public static final String PASSWORD = "root";
        /*
         * 创建连接池BasicDataSource
         */
        public static BasicDataSource dataSource = new BasicDataSource();
        //静态代码块
        static {
            //对连接池对象 进行基本的配置
            dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
            dataSource.setUrl(URL); //指定要连接的数据库地址
            dataSource.setUsername(USERNAME); //指定要连接数据的用户名
            dataSource.setPassword(PASSWORD); //指定要连接数据的密码
        }
        /*
         * 返回连接池对象
         */
        public static DataSource getDataSource(){
            return dataSource;
        }
    }

    4.工具类的使用:

    l  测试类

    /*
     * 演示使用DBUtils工具  完成数据库表的增加操作
     */
    public class Demo {
        // 插入功能 
        @Test
        public void insert(){
            try {
                //获取一个用来执行SQL语句的对象   QueryRunner
                QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
    String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";
                Object[] params = {"股票收入", 5500, "收入"};    
                 int line = qr.update(sql,params);
                //结果集处理
                System.out.println("line = " + line);
                
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        
        //删除功能
        @Test
        public void delete(){
            try {
                //创建一个QueryRunner对象,用来完成SQL语句的执行
                QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                //执行SQL语句
                String sql = "DELETE FROM zhangwu WHERE name = ?";
                Object[] params = {"股票收入"};
                int line = qr.update(sql, params);
                //结果集的处理
                System.out.println("line="+line);
                
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        
        //更新功能
        @Test
        public void update(){
            try {
                //创建一个QueryRunner对象,用来完成SQL语句的执行
                QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                //执行SQL语句
                String sql = "UPDATE zhangwu SET money = money+1000 WHERE name=?";
                Object[] params = {"股票收入"};
                int line = qr.update(sql, params);
                //结果集的处理
                System.out.println("line="+line);
                
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        
        //查询功能,将结果集中第一条记录封装到一个指定的javaBean中。
        @Test
        public void search(){
            try{
                //获取QueryRunner 
                QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                //执行SQL语句
                String sql = "SELECT * FROM zhangwu";
                Object[] params = {};
                Product p = qr.query(sql, new BeanHandler<Product>(Product.class), params);
                //结果集处理
                System.out.println(p);
                
            } catch(SQLException e){
                throw new RuntimeException(e);
            }
        }
    }

    5.常见配置项:

    6.这样就好可以了。

  • 相关阅读:
    GridView小知识1
    ASP 中 GridView 的粗浅入门
    SQL连接
    Microsoft Visual Studio 2010 Express for Windows Phone 新建文件 设置启动
    转载一个应届计算机毕业生2012求职之路
    百度之星平衡负载(3.23)
    查找字符串中首个非重复字符
    CreateMutex函数
    关于“Visual Studio 遇到了异常,可能是由于某个扩展导致的”的解决
    无法打开预编译头文件:“Debug\****.pch”: No such file or directory 的解决办法
  • 原文地址:https://www.cnblogs.com/lixiangyang521/p/7992690.html
Copyright © 2011-2022 走看看