时间:2021-07-01 10:21:17 帮助过:3人阅读
有参构造:QueryRunner runner = new QueryRunner(DataSource dataSource);
有参构造将数据源(连接池)作为参数传入QueryRunner,QueryRunner会从连 接池中获得一个数据库连接资源操作数据库,所以直接使用无Connection参数 的update方法即可操作数据库
无参构造:QueryRunner runner = new QueryRunner();
无参的构造没有将数据源(连接池)作为参数传入QueryRunner,那么我们在使 用QueryRunner对象操作数据库时要使用有Connection参数的方法
代码 展示
新建个tool
package com.oracle.tools; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class MyDBUtils { public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/java0603?useUnicode=true&characterEncoding=UTF-8"; public static final String USERNAME = "root"; public static final String PASSWORD = "123456"; /* * 创建连接池BasicDataSource */ public static BasicDataSource dataSource = new BasicDataSource(); //静态代码块 static { //对连接池对象 进行基本的配置 dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动 dataSource.setUrl(URL); //指定要连接的数据库地址 dataSource.setUsername(USERNAME); //指定要连接数据的用户名 dataSource.setPassword(PASSWORD); //指定要连接数据的密码 } /* * 返回连接池对象 */ public static DataSource getDataSource(){ return dataSource; } // 返回一个连接对象 public static Connection getConn(){ Connection conn=null; try { conn=dataSource.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } } -------------------------------------------------- package com.oracle.demo01; //无参构造QueryRunner 事务 import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import com.oracle.tools.MyDBUtils; public class Demo02 { public static void main(String[] args) { // 创建queryrunner对象 QueryRunner qr=new QueryRunner(); // 获取连接对象 Connection conn=MyDBUtils.getConn(); String sql="update account set money=money-? where aname=?"; try { // 开启事务 conn.setAutoCommit(false);//手动开启 qr.update(conn,sql,100,"zhangsan");//更改-100 } catch (SQLException e) { // 回滚事务 try { conn.rollback();//把回滚写到try里面,上面代码已有错误就会自动回到开启事务 } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // TODO Auto-generated catch block e.printStackTrace(); }finally{ //不管对错,上面代码只要是对的,在这里就会执行 // 提交事务 try { conn.commit(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
做个转账项目
建个dynamic
导包
JDBC事务
标签:on() 图片 info 必须 str user span comm 注意