一般的批处理都是这样的:
//使用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 这种方法 不知道用这种方法可不可以处理
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]
[code="java"]Statement stm = con.createStatement();
sql 为 sql 数组
for (String str : sql)
{
stm.addBatch(str); //将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。
}
stm.executeBatch() //将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。[/code]
这应该就是你要的效果。