创建连接

// 简写版: Connection conn =null;
         Statement st =null;
        conn = DBCP.getConnection();
            st=conn.createStatement();

1.批处理 addBatch()

  可以将多个操作数据库的字符串集中处理

    String sql1="select ..... ";

    String sql2="select ..... ";

    ..............

    st.addBatch(sql1);

    st.addBatch(sql2);

    ..............

    st.executeBatch(); //集中处理

    st.clearBatch();// 最好及时清理,否则字符串仍留在addBatch里面

2.事物管理 setAutoCommit(boolean);

  某些逻辑必须在一个是事务完成:通过事务管理可以让多个逻辑在一个事务完成。

  事物特性: ACID

    Atomicty 原子性:事务必须是原子工作单元,数据的修改要么完全执行,要么全都不执行。

     Consistency 一致性: 事务完成时,必须所有数据都保持一致的状态。

    Isolation 隔离性 :由并发事务所作修改必须与其他并发事务所作修改隔离。
     Durability 持久性: 事务完成后,它对系统的影响是永久性的。

  conn.setAutoCommit( false ); //关闭自动提交,默认是true

    st.executeUpdate(sql1);

    st.executeUpdate(sql2);

      conn.commit(); //手动提交,作用是操作sql1和sql2都执行,或者都不执行

3.preparedStatement :预编译的,可以有效防止注入式攻击

  String sql="select * from emp_xx where ename = upper(?) and sal > ?";

    Connection conn=DBCP.getConnection();
    PreparedStatement p=conn.prepareStatement(sql);
    p.setString(1, "scott");
    p.setDouble(2, 1000.0);
    ResultSet rs=p.executeQuery();

4.结果集

@Test
public void test8(){
    String sql ="select * from emp_xx";
    Connection conn=null;
    ResultSet rs=null;
    try {
        conn=DBCP.getConnection();
        PreparedStatement ps = conn.prepareStatement(sql);
        rs=ps.executeQuery();
        ResultSetMetaData meta =rs.getMetaData(); //获取元数据集
        int number= meta.getColumnCount();//获取结果集里的列的数量
        System.out.println(meta.getColumnTypeName(1));//获取某一列的类型  列的序号从1开始数
        for (int i = 1; i <=number; i++) {
            String columName=meta.getColumnName(i);//遍历获取结果集里的所有列名
            System.out.println(columName);
        }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

5.可滚动结果集

@Test
public void test9(){
    String sql ="select ename,sal from emp_xx order by sal";
    Connection conn=null;
    ResultSet rs=null;
        try {
            conn=DBCP.getConnection();
            //如果要创建可滚动结果集,statement 或者prepareStatement 创建有所不同:
//            Statement stmt = conn.createStatement(type,concurrney);
//            PreparedStatement ps = conn.prepareStatement(sql,type,concurrney);
            /**
             * 其中 type 取值:
             *     TYPE_FORWARD_ONLY: 默认,只能向下读取
             *  TYPE_SCROLL_INSENSTIVE :  可滚动,不感知数据变化
             *  TYPE_SCROLL_SENSTIVE :可滚动,感知数据变化
             *  其中 concurrency:
             *  CONCUR_READ_ONLY: 只读,不能更新
             *  CONCUR_UPDATABLE: 可以更新的结果集
             */
            Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
             rs=stmt.executeQuery(sql);
             /**
              * 移动指针的常用方法 :
              * first :指针移动到第一条
              * last :指针移动到最后一条
              * beforeFirst:
              * afterLast:
              * isFirst: 判断是否指向第一条
              * isLast:是否是最后一条
              * isbeforeFirst:
              * isafterLast:
              * relative :移动到当前指针的相对位置
              * next :移动到下一条
              * previous:移动到前一条
              * absolute:移动到绝对位置
              */
             //更新结果集数据:
             rs.absolute(3);// 指针移到第3条记录
             rs.updateDouble(2, 2000);//更新第二列数据 变成1555
//             rs.updateRow();//更新数据源数据
             rs.first();
             while(rs.next()){
                 System.out.print(rs.getString("ename")+" ");
                 System.out.println(rs.getString("sal"));
             }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

}

dbcp连接池的一些方法的更多相关文章

  1. 采用DBCP连接池技术管理连接

    DBCP的使用步骤步骤一:导包,使用第三方的道具,必须导入相应的jar包. 一般需要导入两个jar包: -commons-dbcp-1.x.jar包 -commons-pool-1.x.x.jar包 ...

  2. DBCP连接池介绍

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...

  3. DBCP连接池原理分析及配置用法

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...

  4. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作

    1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...

  5. 【转】DBCP连接池原理分析

    ---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...

  6. DBCP连接池的使用

    1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...

  7. 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案

    转自:http://blog.csdn.net/wangfayinn/article/details/24623575 c3p0数据库连接池mysql8小时 目录(?)[-] 基本问题解决 项目环境 ...

  8. DBCP 连接池

    DBCP数据源 DBCP 是 Apache 软件基金组织下的开源连接池实现 导入maven包: <!-- dbcp连接池 --> <dependency> <groupI ...

  9. Java学习笔记50(DBCP连接池)

    实际开发中,连接数据库是十分消耗资源的操作,但是,我们又需要频繁地连接数据库 这时候,为了提高效率,这里就会采用连接池技术: 连接池地通俗理解: 一个池里面放入很多的连接,需要哪一个取出来用即可,用完 ...

随机推荐

  1. windows系统下使用mycat实现mysql数据库的主从复制,从而实现负载均衡

    在之前有记录过在一台系统中安装多台数据库,同时实现主从复制,但是那个主从复制只是一个基于dosc命令的,再实际的开发中我们不会去直接连接数据库,一般情况下我们也是通过间接的采用一些中间件去连接,本来是 ...

  2. 请求接口得到一段markdowm遇到的问题

    如图,在console里看得到这段数据 有<br>之类的东东,但是我们用部分富文本解析工具可能会显示不了回车,所以我们可以自己动手: 主要就是利用js的replace方法来把<br& ...

  3. maven详解之 pom.xml 解释

    <project>:pom.xml的根标签,一个maven项目用一对<peoject></project>标签包裹. <modelVersion>4.0 ...

  4. 字符设备驱动之LED驱动

    实现 ①编写驱动框架 ②编写硬件实现代码 (在Linux系统下操作硬件,需要操作虚拟地址,因此需要先把物理地址转换为虚拟地址 ioremap()) 如何实现单个灯的操作: 实现方法之一--操作次设备号 ...

  5. Spring容器的创建原理

    1.new ioc容器(AnnotationConfigApplicationContext 注解ioc) 2.refresh()方法调用 2.1 prepareRefresh()刷新前的预处理 a: ...

  6. Golang的运算符-比较运算符

    Golang的运算符-比较运算符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.比较运算符概述 比较运算符也称为关系运算符,比较运算符返回的类型为bool类型,常见的比较运算符 ...

  7. UVA - 10635 Prince and Princess(LCS,可转化为LIS)

    题意:有两个长度分别为p+1和q+1的序列,每个序列中的各个元素互不相同,且都是1~n2的整数.两个序列的第一个元素均为1.求出A和B的最长公共子序列长度. 分析: A = {1,7,5,4,8,3, ...

  8. UVA - 10891 Game of Sum (区间dp)

    题意:AB两人分别拿一列n个数字,只能从左端或右端拿,不能同时从两端拿,可拿一个或多个,问在两人尽可能多拿的情况下,A最多比B多拿多少. 分析: 1.枚举先手拿的分界线,要么从左端拿,要么从右端拿,比 ...

  9. UVA - 1152 4 Values whose Sum is 0(中途相遇法)

    题意:从四个集合各选一个数,使和等于0,问有多少种选法. 分析:求出来所有ai + bi,在里面找所有等于ci + di的个数. #pragma comment(linker, "/STAC ...

  10. POJ 2305:Basic remains 进制转换

    Basic remains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5221   Accepted: 2203 Des ...