比如下面这段代码:
if("startsysuserinfo".equalsIgnoreCase(action)){
String[] userids=request.getParameterValues("user_id");
if(userids!=null&&userids.length>0){
String instr=null;
for(int index=0;index<userids.length;index++){
if(instr==null) instr=" '"+userids[index]+"' ";
else instr+=",'"+userids[index]+"' ";
}
if(instr!=null&&instr.trim().length()>0){
sql="update t_user set user_useful=1 where user_id in ("+instr+")";
pstmt=con.prepareStatement(sql);
pstmt.executeUpdate();
}
}
}
if(rs!=null) try{rs.close();}catch(Exception ex){};
if(pstmt!=null) try{pstmt.close();}catch(Exception ex){};
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
String tmp=rs.getString("user_ID");
}如果if("startsysuserinfo".equalsIgnoreCase(action))条件不满足的话,程序执行正常,如果条件满足的话,程序执行到String tmp=rs.getString("user_id");的时候报告“关闭的语句”错误
if("startsysuserinfo".equalsIgnoreCase(action)){
String[] userids=request.getParameterValues("user_id");
if(userids!=null&&userids.length>0){
String instr=null;
for(int index=0;index<userids.length;index++){
if(instr==null) instr=" '"+userids[index]+"' ";
else instr+=",'"+userids[index]+"' ";
}
if(instr!=null&&instr.trim().length()>0){
sql="update t_user set user_useful=1 where user_id in ("+instr+")";
pstmt=con.prepareStatement(sql);
pstmt.executeUpdate();
}
}
}
if(rs!=null) try{rs.close();}catch(Exception ex){};
if(pstmt!=null) try{pstmt.close();}catch(Exception ex){};
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
String tmp=rs.getString("user_ID");
}如果if("startsysuserinfo".equalsIgnoreCase(action))条件不满足的话,程序执行正常,如果条件满足的话,程序执行到String tmp=rs.getString("user_id");的时候报告“关闭的语句”错误
while(rs.next()){
System.out.println("111");
String tmp=rs.getString("user_id");
System.out.println("222");
}
我竟然发现这个循环被执行了两次,输出结果是:
111
222
111
(接下来是出错信息)
但是数据库里肯定只有一条记录的啊,如果有多条记录的话,rs.next()可以成功,为什么rs.getString()就会失败呢?而且如果if("startsysuserinfo".equalsIgnoreCase(action))不成立的话,输出结果很正常的!