JAVA中为什么用PreparedStatement中的setInt()方法报错提示关闭的语句

publicvoidupdate(){Statementstmt=null;try{conn=DBUtil.getConnection();stmt=conn.creat... public void update(){
Statement stmt = null;
try {
conn = DBUtil.getConnection();

stmt = conn.createStatement();
Random r = new Random();
for(int i=1000;i<findMaxCount()+1000;i++){
String sql = "UPDATE sale_psj SET price="+r.nextInt(40)+" ,qty="+r.nextInt(40)+" WHERE id="+i;
stmt.executeUpdate(sql);
}
/*
ps = conn.prepareStatement("UPDATE sale_psj SET qty=? WHERE id=?");
Random r = new Random();
for(int i=1000;i<findMaxCount()+1000;i++){
ps.setInt(1, r.nextInt(40));
ps.setInt(2, i);
ps.executeUpdate();
}
*/
用上面的不会错,用下面的就会抛异常:关闭的语法( ps.setInt(1, r.nextInt(40));就在这里出错)
展开
 我来答
落寞如尘012
2014-09-19 · TA获得超过194个赞
知道小有建树答主
回答量:68
采纳率:0%
帮助的人:71.3万
展开全部
楼主不知道ps有数量限制吗?
ps最多只能有300个,也就是说ps一旦多于300个,链接就会溢出,无法继续执行了
解决办法:
在第二个for循环的ps.executeUpdate();后面加上一句:ps.close(); 搞定!!!!!
楼主试试,这是我以前遇到的问题,已解决
心一月011f
2014-09-19 · TA获得超过693个赞
知道小有建树答主
回答量:1008
采纳率:0%
帮助的人:587万
展开全部
prepareStatement需要事物不自动提交
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式