JDBC中的添加/删除/修改操作的共用方法
来源: 阅读:1448 次 日期:2015-09-04 20:25:30
温馨提示: 小编为您整理了“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. 关闭不需要的资源

更多信息请查看IT技术专栏

更多信息请查看数据库
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map