dbcp连接池的一些方法
创建连接
// 简写版: 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连接池的一些方法的更多相关文章
- 采用DBCP连接池技术管理连接
DBCP的使用步骤步骤一:导包,使用第三方的道具,必须导入相应的jar包. 一般需要导入两个jar包: -commons-dbcp-1.x.jar包 -commons-pool-1.x.x.jar包 ...
- DBCP连接池介绍
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作
1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...
- 【转】DBCP连接池原理分析
---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...
- DBCP连接池的使用
1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...
- 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案
转自:http://blog.csdn.net/wangfayinn/article/details/24623575 c3p0数据库连接池mysql8小时 目录(?)[-] 基本问题解决 项目环境 ...
- DBCP 连接池
DBCP数据源 DBCP 是 Apache 软件基金组织下的开源连接池实现 导入maven包: <!-- dbcp连接池 --> <dependency> <groupI ...
- Java学习笔记50(DBCP连接池)
实际开发中,连接数据库是十分消耗资源的操作,但是,我们又需要频繁地连接数据库 这时候,为了提高效率,这里就会采用连接池技术: 连接池地通俗理解: 一个池里面放入很多的连接,需要哪一个取出来用即可,用完 ...
随机推荐
- Windows环境下的32位汇编语言程序设计
一个逆向的告诉我可以尝试学一下8086处理器,再回头看一看自己学过的会有提高学呗,8086处理器怎么学....然后就学了8086的汇编, 好友就分享了琢石成器——Windows环境下的32汇编语言设计 ...
- ErrorCode=-2147217900 表已存在.
ErrorCode=-2147217900 表已存在. 在导出excel时遇到这个问题. 原因是dataTable的TableName中有减号 "-"
- CSS样式表——列表与布局
列表方块:针对<ol></ol>和<ul></ul> 属性style="list-style:none" ...
- 吴裕雄--天生自然java开发常用类库学习笔记:IdentityHashMap类
import java.util.IdentityHashMap ; import java.util.HashMap ; import java.util.Set ; import java.uti ...
- ROS大型工程学习(一) 必须了解的基本文件
一.Cmake文件 阅读工程,首先点开CMakeLists 文件,会定义一些库和可执行文件.首先看可执行文件,rosrun的就是这个节点navigator add_executable(navigat ...
- [YOLO]《YOLOv3: An Incremental Improvement》笔记
相比较于前两篇论文,个人感觉YOLO3作者有点来搞笑的!!!虽然加了一些新的点子进来,但是,论文的开头是这样的: 简单理解就是作者花了很多时间玩Twitter去了,所以没有做啥研究!!!! 然后: 你 ...
- systemctl无法停掉keepalived
这个问题搞了好半天,记录一下,启停都是用的systemctl 起初是测试vip漂移时候发现,主备节点都开启keepalived的状况下,一切正常,主节点的vip也可以访问. 第一次停掉主节点的keep ...
- [Machine Learning][BP]The Vectorized Back Propagation Algorithm
Reference: https://www.cs.swarthmore.edu/~meeden/cs81/s10/BackPropDeriv.pdf I spent nearly one hour ...
- TensorFlow2 Part1:基础
TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络 ...
- jQuery原理系列-工具函数
jquery源码中有很多精妙的实现,对于我们每天都在使用的东西,一定要知其原理,如果遇到不能使用jquery环境,也能自己封装原生的代码实现. 1.检测类型 众所周知typeof 不能用来检测数据,会 ...