PreparedStatement的Batch问题???急!! 语句都没有执行成功,你可以先换一条没有重复记录的试一试。不知道你的int counts[] 为什么定义了两次???建议第一次去掉 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,据我所知executeBatch()好像是做事务处理的,也就是要么batch中的操作全部成功或者全部失败。我不知道你的dc_paper是否有唯一约束条件,也就是在已经存在e,e记录的情况下再插一条e,e会出错,如果是这样,那么不难解释。插入时,首先插入t,f成功再插入e,e,违反唯一约束,失败stmt回滚到最先的情况,所以counts[]都是返回插入失败,也就是{1,1}了不过在程序中,你最好都要进行错误捕捉和出错的回滚操作。 int []counts={-1,-1};int counts[] = stmt.executeBatch();????怎么两次?什么意思?看不懂. int counts[] = stmt.executeBatch();应该改为counts= stmt.executeBatch();con设为自动提交方式,batch中的操作可以是部分成功部分失败。(就是指批处理中插入的记录有主键冲突的没有插入,没有主键冲突插入成功)dc_paper有唯一约束条件;另外,如果我一次批处理5000个insert,stmt.setFetchSize()如果设置成5000是不是就能提高插入数据库的性能。 根据你假设的情况,smtmt.executeBatch()必然抛出BatchUpdateException(因为重复插入记录(e,e)),此时jdbc driver可以选择继续执行剩下的命令或停止执行而把整个batch回滚。如果是后一种情况,那么counts[]依然是{-1,-1}PS:最好报出你使用的jdbc driver,不同厂商的jdbc driver,其实现都是不同的 应该没有问题,后面应该加上stmt.executeBatch()这个与自动提交无关 try { String sql = "insert into message (msgId,content,isRead,sendTime,title,fromUser,fromUserType,toUserType,toUser)" + " values(s_messageId.nextval,'" + StringUtil.toGb(this.content) + "','否',sysdate,'" + StringUtil.toGb(this.title) + "','" + this.fromUser + "','" + this.fromUserType + "','" + this.toUserType + "',?)"; this.escapSQLTag(); conn = db.getConnection(); ps = conn.prepareStatement(sql); for (int i = 0; i < toUser.length; i++) { ps.setString(1, toUser[i]); ps.addBatch(); } ps.executeBatch(); tag = true; } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { db.CleanConnection(conn, ps); } catch (Exception e) { System.out.println(e.getMessage()); } } jdbc driver是COM.ibm.db2.jdbc.app.DB2Driver!! socket 聊天程序 急急急!!! 求一正则表达式 请写出如下代码的结果 问个关于Java和OpenOffice的问题 有谁用过Torque 高分求助:删除文本文件的一部分,有什么好的方法没有? 现在java的桌面开发有啥框架或者平台没有? Jbuilder中如何调整应用程序窗体大小?(在线) 为什么我用JDBC连接Oracle数据库连不上? 高分求教,关于JTextField 不好意思,请帮个忙,分不是问题:) 字节数组byte的长度有限制吗?
插入时,首先插入t,f成功
再插入e,e,违反唯一约束,失败
stmt回滚到最先的情况,所以counts[]都是返回插入失败,也就是{1,1}了
不过在程序中,你最好都要进行错误捕捉和出错的回滚操作。
int counts[] = stmt.executeBatch();
????
怎么两次?什么意思?看不懂.
con设为自动提交方式,batch中的操作可以是部分成功部分失败。(就是指批处理中插入的记录有主键冲突的没有插入,没有主键冲突插入成功)
dc_paper有唯一约束条件;
另外,如果我一次批处理5000个insert,stmt.setFetchSize()如果设置成5000是不是就能提高插入数据库的性能。
记录(e,e)),此时jdbc driver可以选择继续执行剩下的命令或停止执行而把整个batch回滚。
如果是后一种情况,那么counts[]依然是{-1,-1}PS:最好报出你使用的jdbc driver,不同厂商的jdbc driver,其实现都是不同的
stmt.executeBatch()
这个与自动提交无关
String sql = "insert into message (msgId,content,isRead,sendTime,title,fromUser,fromUserType,toUserType,toUser)" +
" values(s_messageId.nextval,'" + StringUtil.toGb(this.content) +
"','否',sysdate,'" + StringUtil.toGb(this.title) +
"','" + this.fromUser +
"','" + this.fromUserType + "','" + this.toUserType + "',?)";
this.escapSQLTag();
conn = db.getConnection();
ps = conn.prepareStatement(sql);
for (int i = 0; i < toUser.length; i++) {
ps.setString(1, toUser[i]);
ps.addBatch();
}
ps.executeBatch();
tag = true;
}
catch (Exception e) {
System.out.println(e.getMessage());
}
finally {
try {
db.CleanConnection(conn, ps);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}