newerdragon 2011-10-08 11:56 采纳率: 0%
浏览 750
已采纳

使用addBatch与executeBatch批量处理SQL

我这样写对吗,我感觉好怪异啊,没用过这个东西。
请老哥们,帮我看下改如何修改才能做到同时处理2条SQL
而且那格式化参数,我不知道怎么设置到数据库中,请老哥们帮忙纠正下,或者给个原例子看一下。
那个executeBatch是这样判断是否插入成功吗
谢谢了。

[code="java"]
public boolean InsertUpDeOrderData(CheckOutBean bean) {
String sql = "insert into tb_order values(?,?,?,?,?,?,?,?,?,?)";
String sq2 = "insert into tb_order_detail values(?,?,?,?,?,?)";
Object [] obj = {
bean.getUser_id(),bean.getCh_name(),bean.getAddress(),bean.getPostalcode(),
bean.getPhone(),bean.getMobile(),bean.getEmail(),bean.getSendtype(),
bean.getPaytype(),bean.getPostscript()
};
return this.InsertUpDeOrderData(sql,sq2,obj);
}
[/code]

这两个方法不在同一类中
[code="java"]
public boolean InsertUpDeOrderData(String sql,String sq2 ,Object [] obj){
con = DBUtil.getConnection();
int [] in = null;
boolean bool = true;
try {
con.setAutoCommit(false);
stm = con.prepareStatement(sql);
stm.addBatch(sql);
stm.addBatch(sq2);
if(obj != null){
for(int x = 0 ; x<obj.length ; x++){
stm.setObject(x+1, obj[x]);
}
}
in = stm.executeBatch();
for(int x = 0 ; x < in.length; x++){
if(in[x]<=0){
bool = false;
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.CloseAll(con, stm, rs);
}
return bool;
}
[/code]

  • 写回答

3条回答 默认 最新

  • _1_1_7_ 2011-10-09 08:27
    关注

    [quote]这sq1 sq2 不能带参数是指 不能用 ? 号吗, 直接插入值啊? [/quote]
    没错,PreparedStatement 用?是因为他要执行相同的sql语句(参数不同)多次。
    PreparedStatement 表示预编译的 SQL 语句的对象。

    SQL 语句被预编译并且存储在 PreparedStatement 对象中。然后可以使用此对象高效地多次执行该语句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了