java中取消修改操作_JDBC中的添加、删除、修改操作的共用方法与大家分享一下...

这是经过我的项目实验后的可用方法:是用来实现添加、删除、修改操作的共用方法。分为两个方法,一个是设置PreparedStatement ps;对象参数的方法。一个是执行泛型PreparedStatement ps;对象的下面来看一下吧:

/*

* Author:spring

* Date :09-03-06 20:28

*给PreparedStatement对象设置参数的方法

*/

privatePreparedStatement setPreparedStatement(PreparedStatement ps,

List pars)throwsSQLException {

try{

// 1.获取数组的长度这样能提高一点性能

intx = pars.size();

// 2.循环设置ps中需要的参数

for(inti = 0; i < x; i++) {

ps.setObject(i + 1, pars.get(i));

System.out.println(pars.get(i));

}

// 3.添加到缓冲区中

ps.addBatch();

// 4.设置完参数的ps返回

returnps;

}finally{

}

}

/*

*执行PreparedStatement泛型列表的方法

*/

privatebooleanexceurePreparedStatement(List pss)

throwsSQLException {

intx = 0;

try{

// 1.为手动提交

this.conn.setAutoCommit(false);

// 2.执行所有的PreparedStatement对象

x = pss.size();

for(inti = 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();

//个性化异常

thrownewMyException("page.error.1000","1000数据执行的批量出错.");

//throw new SQLException();

}finally{

//最后把手动提交改为自动提交

this.conn.setAutoCommit(true);

//关闭不用的资源

for(inti = 0; i < x; i++) {

DBUtils.close(pss.get(i));

}

}

}

//下面来介绍一下它们的用法

要实现一个用户添加的功能,在添加的同时还要往log日志表中添加是谁操作的

这就要用到事务处理了

/*

*添加用户

*/

publicBoolean add_Users()throwsSQLException {

try{

// 1.要执行的sql语句

sql1=newStringBuilder()

.append("insert into spring_users(U_ID,u_Name,u_Password,u_Email,u_State)")

.append(" values(SEQ_USERS.NEXTVAL,?,?,?,?)");

//添加日志

sql2=newStringBuilder()

.append("insert into SPRING_LOG(L_ID,L_NAME,U_ID,L_MESSAGE,L_DATE)")

.append(" values(SEQ_LOG.nextval,?,?,?,?)");

// 2.要设置的参数列表

pars1=newArrayList();

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=newArrayList();

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=newArrayList();

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.关闭不需要的资源

7.这上面是我开发时的源码大家可以直接拿去用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值