标题 | JDBC中的添加/删除/修改操作的共用方法 |
范文 | 用来实现添加、删除、修改操作的共用方法。分为两个方法,一个是设置PreparedStatement ps;对象参数的方法。一个是执行泛型PreparedStatement ps;对象的. 下面来看一下吧: /* * Author:spring * Date :09-03-06 20:28 */ private PreparedStatement setPreparedStatement(PreparedStatement ps, List pars) throws SQLException { try { // 1.获取数组的长度这样能提高一点性能 int x = pars.size(); // 2.循环设置ps中需要的参数 for (int i = 0; i ﹤ x; i++) { ps.setObject(i + 1, pars.get(i)); System.out.println(pars.get(i)); } // 3.添加到缓冲区中 ps.addBatch(); // 4.设置完参数的ps返回 return ps; } finally { } } /* * 执行PreparedStatement泛型列表的方法 */ privateboolean exceurePreparedStatement(List﹤PreparedStatement> pss) throws SQLException { int x = 0; try { // 1.为手动提交 this.conn.setAutoCommit(false); // 2.执行所有的PreparedStatement对象 x = pss.size(); for (int i = 0; i ﹤ x; i++) { pss.get(i).executeBatch(); } // 3.没有错误的话的就提交事务 this.conn.commit(); System.out.println("执行executeBatch()"); // 4.如果提交成功那就返回成功true returntrue; } catch (Exception e) { // 出现异常回滚事务 e.printStackTrace(); System.out.println("执行批量时error"); this.conn.rollback(); //个性化异常 thrownew MyException("page.error.1000","1000 数据执行的批量出错."); //throw new SQLException(); } finally { // 最后把手动提交改为自动提交 this.conn.setAutoCommit(true); // 关闭不用的资源 for (int i = 0; i ﹤ x; i++) { DBUtils.close(pss.get(i)); } } } //下面来介绍一下它们的用法 要实现一个用户添加的功能,在添加的同时还要往log日志表中添加是谁操作的 这就要用到事务处理了 /* *添加用户 */ public Boolean add_Users() throws SQLException { try { // 1.要执行的sql语句 sql1 = new StringBuilder() .append("insert into spring_users(U_ID,u_Name,u_Password,u_Email,u_State)") .append(" values(SEQ_USERS.NEXTVAL,?,?,?,?)"); // 添加日志 sql2 = new StringBuilder() .append("insert into SPRING_LOG(L_ID,L_NAME,U_ID,L_MESSAGE,L_DATE)") .append(" values(SEQ_LOG.nextval,?,?,?,?)"); // 2.要设置的参数列表 pars1 = new ArrayList(); pars1.add(dto.get("u_Name")); // 用户名 pars1.add(dto.get("u_Password")); // 用户密码 pars1.add(dto.get("u_Email")); // 用户E-email pars1.add(dto.get("u_Rating"));//权限与用户状态 // 获取当前操作员的u_id String u_Id = (String) dto.get("u_Id"); pars2 = new ArrayList(); pars2.add("SPRING_USERS"); // 设置1 操作的表名 pars2.add(u_Id); // 设置2 操作人id pars2.add("这是用户添加操作:用户名:" + this.dto.get("u_Name"));// 设置3 // 描述看看是不是添加操作 pars2.add(Tools.getSqlTimestamp()); // 设置4 操作时间 // 3.编译sql语句并设置参数 pss = new ArrayList(); ps1 = this.conn.prepareStatement(sql1.toString()); ps2 = this.conn.prepareStatement(sql2.toString()); // 设置参数 pss.add(this.setPreparedStatement(ps1, pars1)); pss.add(this.setPreparedStatement(ps2, pars2)); // 4.调用执行sql语句的方法 returnthis.exceurePreparedStatement(pss); } finally { // 5.释放使用资源 DBUtils.close(ps1); DBUtils.close(ps2); } } 这里的一些方法是我封装的像获取当前用户的u_id , String u_Id = (String) dto.get("u_Id");这是我用的构造传过来的dto所以我们不用管它; 分析一下用法: 1. 设置sql语句 2. 编译sql语句(用PreparedStatement) 3. 定义一个泛型PreparedStatement 4. 设置PreparedStatement的参数返回来添加到泛型里 5. 调用执行泛型中的PreparedStatement 对象 6. 关闭不需要的资源 |
随便看 |
|
在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。