这段代码是我用来更新数据库的,由另一个函数调用它,可是每次执行到297次就报错,说是“超出游标最大数”,报错的行我已经标出来了,游标数量我设置为300。请朋友帮我看看,我每次使用完PreparedStatement后也及时的关闭了啊,为什么还会报错啊?public String obtainPartNumberObjectInfo(String partnumber,
String tablename,
String sql_field,
String newvalue,
String condition,
boolean isUpdatePartNumber,
String isBorrowed,
Connection con ) { PreparedStatement pss = null;
PreparedStatement ps_upt = null ;
Statement stmt = null ;
ResultSet rs = null;
String sql = null;
try {
if (isUpdatePartNumber == true) { sql = "select /*+RULE*/"+ sql_field +" from PDMM31A." + tablename + " where PARTNUMBER=?";
pss = con.prepareStatement(sql);
pss.setString(1, partnumber);
rs = pss.executeQuery(); if (isBorrowed.equals("-")) { if (rs.next()) {
String sqlUpt = "update PDMM31A."+ tablename+ " set PROJECTNAME=? , ORIGPROJECT=? where PARTNUMBER=? and ? like ? ";
ps_upt = con.prepareStatement(sqlUpt);//执行297次报错
ps_upt.setString(1, newvalue);
ps_upt.setString(2, newvalue);
ps_upt.setString(3, partnumber);
ps_upt.setString(4, ATTRIBUTENAME);
ps_upt.setString(5, condition);
ps_upt.executeUpdate();
close(ps_upt);
}
}
}……
}catch (Exception e) { e.printStackTrace(); } finally { close( ps_upt ) ;
close(pss);
close(stmt);
close(rs); } return ……;}
String tablename,
String sql_field,
String newvalue,
String condition,
boolean isUpdatePartNumber,
String isBorrowed,
Connection con ) { PreparedStatement pss = null;
PreparedStatement ps_upt = null ;
Statement stmt = null ;
ResultSet rs = null;
String sql = null;
try {
if (isUpdatePartNumber == true) { sql = "select /*+RULE*/"+ sql_field +" from PDMM31A." + tablename + " where PARTNUMBER=?";
pss = con.prepareStatement(sql);
pss.setString(1, partnumber);
rs = pss.executeQuery(); if (isBorrowed.equals("-")) { if (rs.next()) {
String sqlUpt = "update PDMM31A."+ tablename+ " set PROJECTNAME=? , ORIGPROJECT=? where PARTNUMBER=? and ? like ? ";
ps_upt = con.prepareStatement(sqlUpt);//执行297次报错
ps_upt.setString(1, newvalue);
ps_upt.setString(2, newvalue);
ps_upt.setString(3, partnumber);
ps_upt.setString(4, ATTRIBUTENAME);
ps_upt.setString(5, condition);
ps_upt.executeUpdate();
close(ps_upt);
}
}
}……
}catch (Exception e) { e.printStackTrace(); } finally { close( ps_upt ) ;
close(pss);
close(stmt);
close(rs); } return ……;}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货