javaoop事务提交详解
2016-05-20 17:33 TNT_xxx 阅读(287) 评论(0) 编辑 收藏 举报1.对于 需要 同时 进行的 sql语句,一般都会选择 使用 事务 来 进行操作
面向 数据库层的 DBma 里面,添加一个 方法 就行了
public int Mytran(List<String > sqllist,List<Object[]> objslist){
int iline=-1;
sqlcon=GetConnection();//获取链接对象
sqlcon.setAutoCommit(false);//取消事务的自动提交功能
if(sqlList.size()>0){
for(int i=0;i<sqlList.size();i++){
String sql=sqlList.get(i);//获取要执行的sql语句
Object [] objs=objsList.get(i);//获取要执行的sql语句的参数
pst=sqlcon.prepareStatement(sql);//创建pst对象
if(objs!=null){//为sql语句的参数赋值
if(objs.length>0){// if大于 0 意思 就是 只执行一次
int idx=1;
for(Object obj : objs){
pst.setObject(idx, obj);// 给 其赋 参数值
idx++;
}
}
}
pst.execute();//执行sql语句
}
}
iline=1;
sqlcon.commit();//如果sql语句执行成功,则提交事务
sqlcon.rollback();//如果sql语句执行失败,则回滚事务----在 catch里面
return iline;
}
++++++++++++++++++++++++++++++++++++++++++++++++++
调用时 就用
public static int shiwu(){
String sql1="update product set cnt-=? where gid=? ";
String sql2="update tbmenmber set salary-=? where id=? ";
List<String> sqllist=new ArrayList<String>();
sqllist.add(sql1);
sqllist.add(sql2);
把 两个 字符串数组放入到 List<String >里面
把 两个 object【】 数组 放入到 List 里面
Object [] objs1={200,4};
Object [] objss2={20,1};
List<Object[]> olist=new ArrayList<Object[]>();
olist.add(objs1);
olist.add(objss2);
Db dn=new Db();
int iiii=dn.MyTransaction(sqllist, olist);
return iiii;
}