zoukankan      html  css  js  c++  java
  • java JDBC (八) 连接池 DBCP

    package cn.sasa.demo1;
    
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp2.BasicDataSource;
    
    public class DBUtils {
        private static BasicDataSource datasource = new BasicDataSource();
        
        static {
            /**
             * 连接池:
             * 存放连接的容器
             * 不需要每次都创建连接、释放连接
             * 
             * DataSource接口
             * java为数据库连接池提供的公共接口:javax.sql.DataSource
             * 常用的连接池: DBCP C3P0
             * 
             * 导入jar包
             * DBCP连接池:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
             * Commons Pool:http://commons.apache.org/proper/commons-pool/download_pool.cgi
             * DBCP依赖于Pool
             * 只导入上面两个包运行如下代码会报错:java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
             * 还需导入包commons-logging:http://commons.apache.org/proper/commons-logging/download_logging.cgi
             */
            //数据库连接信息,必须
            datasource.setDriverClassName(DBProperties.driver);
            datasource.setUrl(DBProperties.url);
            datasource.setUsername(DBProperties.user);
            datasource.setPassword(DBProperties.pwd);
            //连接池的配置,可选信息
            datasource.setInitialSize(10);//初始化的连接数
            //....
        }
        
        public static DataSource getDataSource() {
            return datasource;
        }    
    }
    package cn.sasa.demo1;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    public class ConnectionPoolDemo {
        static QueryRunner query = new QueryRunner(DBUtils.getDataSource());
        public static void main(String[] args) {
            select();
        }
        static void select() {
            String sql = "SELECT * FROM product";
            try {
                List<Product> plist = query.query(sql, new BeanListHandler<Product>(Product.class));
                for(Product product : plist) {
                    System.out.print(product.getPname()+"="+product.getPrice()+"	");
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    package cn.sasa.demo1;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class DBProperties {
        public static String driver = "";
        public static String url = "";
        public static String user = "";
        public static String pwd = "";
        
        static {
            try {
                InputStream input = DBProperties.class.getClassLoader().getResourceAsStream("database.properties");
                Properties properties = new Properties();
                properties.load(input);
                driver = properties.getProperty("driver");
                url = properties.getProperty("url");
                user = properties.getProperty("user");
                pwd = properties.getProperty("pwd");
            }catch(IOException ex){
    //            ex.printStackTrace();
                throw new RuntimeException("数据库信息获取失败");
            }
        }
    }
    package cn.sasa.demo1;
    
    public class Product {
        private int pid;
        private String pname;
        private double price;
        private String ptype;
        private String create_tm;
        
        public Product() {}
        public Product(int pid, String pname,double price,
                String ptype, String create_tm) {
            this.pid = pid;
            this.pname = pname;
            this.price = price;
            this.ptype = ptype;
            this.create_tm = create_tm;
        }
        public int getPid() {
            return pid;
        }
        public void setPid(int pid) {
            this.pid = pid;
        }
        public String getPname() {
            return pname;
        }
        public void setPname(String pname) {
            this.pname = pname;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        public String getPtype() {
            return ptype;
        }
        public void setPtype(String ptype) {
            this.ptype = ptype;
        }
        public String getCreate_tm() {
            return create_tm;
        }
        public void setCreate_tm(String create_tm) {
            this.create_tm = create_tm;
        }
    }
  • 相关阅读:
    VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
    Silverlight与常用数据库互操作系列索引
    aspnet在IIS注册
    arcgis server进行查询任务时默认返回最大为500条记录的修改方法
    【转】SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭
    【转】VS2008 使用小技巧 提高编程效率
    【转】C#复制、粘贴文本信息到剪贴板
    【转】使用sp_executesql执行动态SQL语句,同时向里面传入参数。
    【转】ASP.NET弹出对话框后网页变形解决办法
    你应该知道的Virtual Studio 2008
  • 原文地址:https://www.cnblogs.com/SasaL/p/10287438.html
Copyright © 2011-2022 走看看