www88485400
2009-06-29 11:30 阅读 136
已采纳

关于数据库批处理的问题

一般的批处理都是这样的:

//使用PreparedStatement进行批处理
PreparedStatement psStatement = connect.prepareStatement("你的SQL语句(?)");
psStatement.setString(1,"Jennie");
psStatement.addBatch();
//根据需要添加多条批处理语句
psStatement.setString(1,"Tom");
psStatement.addBatch();
//获得批处理的结果
int[] uCounts = psStatement.executeBatch();
//和上面一样可以一次性执行
connect.commit();

现在呢 我想向多个表插入数据也用批处理 并且他们可能交叉在一起不知道能不能实现
那位高人给我一共一个例子看看。
如果我用下方这种方式可不可以提个意见

//使用PreparedStatement进行批处理
PreparedStatement psStatement1 = connect.prepareStatement("你的SQL语句(?)");
psStatement1.setString(1,"Jennie");
psStatement1.addBatch();
//根据需要添加多条批处理语句
PreparedStatement psStatement2 = connect.prepareStatement("你的SQL语句(?)");

psStatement2.setString(1,"Tom");
psStatement2.addBatch();
//获得批处理的结果
int[] uCounts1 = psStatement1.executeBatch();
int[] uCounts2 = psStatement2.executeBatch();

//和上面一样可以一次性执行
connect.commit();

[b]问题补充:[/b]
我只是想用 prepareStatement 这种方法 不知道用这种方法可不可以处理

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    joy_gw joy_gw 2009-06-29 16:33

    PreparedStatement 是 Statement 子类,PreparedStatement 当然可以实现
    例:
    [code="java"]PreparedStatement p = (PreparedStatement) con.createStatement();

    sql 为 sql 数组 {insert into xx values(?,?,?,)}
    for (String str : sql)

    {

    stm.addBatch(str); //将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。

    stm.setObject(1,xxx);
    stm.setObject(2,xxx);
    .......
    }

    stm.executeBatch() [/code]

    点赞 评论 复制链接分享
  • joy_gw joy_gw 2009-06-29 12:29

    [code="java"]Statement stm = con.createStatement();

    sql 为 sql 数组
    for (String str : sql)
    {

    stm.addBatch(str); //将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。
    }
    stm.executeBatch() //将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。[/code]

    这应该就是你要的效果。

    点赞 评论 复制链接分享

相关推荐