MySQL数据库使用及连接池



 1、回顾数据库的基本用法

     * 加载驱动:Class.forName().newInstance;//在JVM内加载了驱动

        e.g:Class.forName("com.mysql.jdbc.Driver").newInstance;

     * 获取连接对象:

        java.sql.Connection conn = DriverManager.getConnection(url,userName,pwd);

        其中:url="jdbc:mysql://localhost/"+dbName;  //在本机器上的配置

        若是Oracle数据库:url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";

     * 获取处理对象:

        java.sql.Statement stmt = conn.createStatement();

        java.sql.preparedStatement pstmt = conn.preparedStatement(sql);

     * ResultSet遍历记录

        java.sql.ResultSet rs = stmt.excuteQuery(sql);//查询

        while(rs.next()){//rs.next()每次被调用将指向下一条记录,第一次调用将指向第一条记录

            rs.getString("goods_id");//使用列名访问

            rs.getDouble("price");

            或

            rs.getString(1);//使用***访问

            rs.getDouble(2);

        }

 

2、数据库连接池

     基本步骤:

     * 创建数据源对象:

        BasicDataSource ds = new BasicDataSource();

     * 设定数据源的相关参数:

        ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");

        ds.setUsername("admin");

        ds.setPassword("123456");

        ds.setInitialSize(10);//线程池容量

        ds.setMaxActive(20);

     * 生成连接池(连续多个连接):

        DataSource ds = setupDataSource();

        Connection conn = ds.getConnection();

       

     * 数据库操作:

     * 关闭数据源:

        ds.close();

      注意:数据库连接池技术是Apache的一个项目,在使用中必须用到两个外部类库。

      commons-dbcp-1.2x.zip  、 commons-pool-1.4.1.zip

      还要注意一下,有ds获得的conn使用后调用conn.close()将其休眠。

 

3、批处理:

      /** * 获取数据源,注意:org.apache.commons.dbcp.BasicDataSource中的一些方法 * 如下函数中的set方法都不是实现接口方法。 * @return 数据源 */ private static javax.sql.DataSource getDS(){ BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver");//加载驱动 ds.setUsername("netjavablog");//数据库用户名 ds.setPassword("netjavablog");//密码 ds.setUrl("jdbc:mysql://localhost:3306/netjavablog");//数据库url ds.setInitialSize(5);//线程池容量,即连接个数。 return ds; } for(int i=0;i<10;i++){ //每次循环,从线程池取出一个连接对象。 java.sql.Connection conn= ds.getConnection(); String sql="select * from userinfo"; try{ java.sql.Statement stmt=conn.createStatement(); java.sql.ResultSet rs= stmt.executeQuery(sql); while(rs.next()){ UserInfo user=new UserInfo();// int id=rs.getInt(1); String name=rs.getString(2); String pwd=rs.getString(3); user.setId(id); user.setName(name); user.setPwd(pwd); System.out.println("user: "+user.toString()); Thread.sleep(3000); } rs.close(); }catch(Exception ef){ ef.printStackTrace(); } conn.close();//注意:该close方法并不是关闭了连接,而是 //将连接放到连接池休眠。



 MySQL数据库使用及连接池