使用commons-dbutils

本文详细介绍了如何使用commons-dbutils库与Oracle数据库进行基本的连接、查询和更新操作,包括配置数据源、执行SQL语句、处理结果集等核心步骤,并通过代码示例展示了具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

commons-dbutils 比commons-pool小多了,就像官方的example中说的一样我们只需要了解QueryRunner类和ResultSetHandler接口。
顺便说一下,家里笔记本装的是oracle 11g xe(oracle的快捷版),用于测试代码完全是够了。装好后在安装目录的:oraclex\app\oracle\product\11.2.0\server\jdbc\lib 下有驱动类。
ojdbc5.jar 对应1.5jdk,ojdbc6.jar 或者ojdbc6_g.jar 对应1.6jdk。

下面是测试例子:


public class TestRunner2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
QueryRunner runer = new QueryRunner();

BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
bds.setUsername("xiaoqingp");
bds.setPassword("test");
bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");

Connection conn = bds.getConnection();
conn.setAutoCommit(false);
for (int i = 0; i < 2; i++) {
String sql = "insert into p_user\n" + " (id, name, remark)\n"
+ "values\n" + " (xiaoqing_seq.nextval, ? , ?)";

runer.update(conn, sql, new Object[] { "测试" + i, "测试添加" + i });
}

conn.commit();
conn.close();
}
}

XE获取到的connection 默认还是自动提交,所以这里写了一下:conn.setAutoCommit(false)
比较遗憾的是没有对plsql 过程使用进行封装,等看完DBCP源码后自己写一个。

ResultSetHandler ,这个就是java回调模式的一种实现。

public class TestResultSetHandler {

public static void main(String[] args) throws SQLException {
QueryRunner runer = new QueryRunner();

BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
bds.setUsername("xiaoqingp");
bds.setPassword("test");
bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");

Connection conn = bds.getConnection();
conn.setAutoCommit(false);

String sql = "select name, remark from p_user";
List<User> list = runer.query(conn,sql, new ResultSetHandler<List<User>>(){
@Override
public List<User> handle(ResultSet rs) throws SQLException {
List<User> list = new ArrayList<User>();
while(rs.next()){
User temp = new User();
temp.setName(rs.getString("name"));
temp.setRemark(rs.getString("remark"));

list.add(temp);
}

return list;
}

});

System.out.println(list);

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值