PreparedStatement.executeUpdate()循环插入问题

_黑白_ 2009-12-24 09:58:35
这个循环为什么执行到pstmt3.executeUpdate();就不再循环了呢?而且这段代码一下的代码页不执行了
for(int i=0,n=xx.length;i<n;i++)
{
PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
pstmt3.setInt(1,newid);
pstmt3.setInt(2,i+1);
pstmt3.setString(3,xx[i]);
pstmt3.executeUpdate();
}
...全文
759 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Z_FEI 2010-01-11
  • 打赏
  • 举报
回复
你的批量处理有问题,参考7楼的吧!
xfjoe 2010-01-11
  • 打赏
  • 举报
回复
可以尝试如下修改:
int inserts[];
PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
for(int i=0,n=xx.length;i <n;i++)
{
pstmt3.setInt(1,newid);
pstmt3.setInt(2,i+1);
pstmt3.setString(3,xx[i]);
pstmt3.addBatch();

}
inserts=pstmt3.executeBatch();

修改这里试试,如果不行,把你的代码及相关数据贴上来,大家帮你分析。你这样描述太简单了。
for(int i=0,n=xx.length;i <n;i++)
修改成
int n = xx.length;
for(int i=0;i <n;i++)
zhoutt1989 2009-12-30
  • 打赏
  • 举报
回复
ps.close()
_黑白_ 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xfjoe 的回复:]
可以尝试如下修改:
int inserts[];
PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
for(int i=0,n=xx.length;i <n;i++)
                  {
                  pstmt3.setInt(1,newid);
                  pstmt3.setInt(2,i+1);
                  pstmt3.setString(3,xx[i]);
                  pstmt3.addBatch();

}
inserts=pstmt3.executeBatch();

[/Quote]我这样修改了,可是还是一样啊..
masterjames 2009-12-25
  • 打赏
  • 举报
回复
如果断电了.只转了一半怎么办?楼主要多考虑.必要的时候要起用事务.
水墨画 2009-12-25
  • 打赏
  • 举报
回复
就用7楼的方法
水中影子 2009-12-25
  • 打赏
  • 举报
回复
楼主, PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
写在循环里面,不怕内存溢出吗?

可以参考七楼的
xfjoe 2009-12-25
  • 打赏
  • 举报
回复
可以尝试如下修改:
int inserts[];
PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
for(int i=0,n=xx.length;i <n;i++)
{
pstmt3.setInt(1,newid);
pstmt3.setInt(2,i+1);
pstmt3.setString(3,xx[i]);
pstmt3.addBatch();

}
inserts=pstmt3.executeBatch();
dawei_sz 2009-12-25
  • 打赏
  • 举报
回复
驱动的一次连接上面 PS的数量是有限制的,你这样会爆的
道光2008 2009-12-25
  • 打赏
  • 举报
回复
使用批处理实现
nyeah 2009-12-25
  • 打赏
  • 举报
回复
不说其他了,就看
PreparedStatement pstmt3= conn.prepareStatement("insert into toupiao(id,xxid,xuanxiang) values(?,?,?)");
写在循环里面就是很大的效率问题
SambaGao 2009-12-25
  • 打赏
  • 举报
回复
有异常吗?如果有异常贴出来。如果没有异常就debug一下。
zl3450341 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crazylaa 的回复:]
只看英文,乱码不要管哪有你这样批量更新的?
Java codeString s="";
File f=new File(fileName);if (!f.exists()) {thrownew Exception("file doesn't exist....");
}
BufferedReader br=null;
PreparedStatement pstmt=null;try {
br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String sql="insert into tbl_report(a,b,c,d)"+"values(?,?,?,'2009-12-07')";
pstmt= con.prepareStatement(sql);// 寰幆澶栭儴鍑嗗濂絧repareStatement;while ((s= br.readLine())!=null) {if (s.indexOf("鍚堣")>0) {continue;
}
String[] c= s.split("\t");
printArray(c);if (c.length==3) {// 鍔犲叆鎵归噺鍙傛暟 pstmt.setString(1, c[0]);
pstmt.setString(2, c[1]);
pstmt.setString(3, c[2]);
pstmt.addBatch();
}
}// 涓€娆℃墽琛屻€? pstmt.executeBatch();
System.out.println("file write back finished");
}catch (Exception e) {throw e;
}finally {try {if (pstmt!=null) {
pstmt.close();
}
br.close();
}catch (Exception e) {
e.printStackTrace();
}
}
[/Quote]
这码乱的。。
crazylaa 2009-12-24
  • 打赏
  • 举报
回复
只看英文,乱码不要管哪有你这样批量更新的?
String s = "";
File f = new File(fileName);
if (!f.exists()) {
throw new Exception("file doesn't exist....");
}
BufferedReader br = null;
PreparedStatement pstmt = null;
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream(f)));
String sql = "insert into tbl_report(a,b,c,d)"
+ "values(?,?,?,'2009-12-07')";
pstmt = con.prepareStatement(sql);
// 寰幆澶栭儴鍑嗗濂絧repareStatement;
while ((s = br.readLine()) != null) {
if (s.indexOf("鍚堣") > 0) {
continue;
}
String[] c = s.split("\t");
printArray(c);
if (c.length == 3) {
// 鍔犲叆鎵归噺鍙傛暟
pstmt.setString(1, c[0]);
pstmt.setString(2, c[1]);
pstmt.setString(3, c[2]);
pstmt.addBatch();
}
}
// 涓€娆℃墽琛屻€?
pstmt.executeBatch();
System.out.println("file write back finished");
} catch (Exception e) {
throw e;
} finally {
try {
if (pstmt != null) {
pstmt.close();
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧