提问:ResultSet在if语句中不可操作?
<%
String idno=request.getParameter( "searchidno "); //获取提交的身份证号
String name=request.getParameter( "searchname "); //获取提交的姓名
String origin=request.getParameter( "searchorigin "); //获取提交的籍贯
if(idno==null){idno= " ";}
byte b[]=idno.getBytes( "ISO-8859-1 ");
idno=new String(b);
if(name==null){name= " ";}
byte c[]=name.getBytes( "ISO-8859-1 ");
name=new String(c);
if(origin==null){origin= " ";}
byte d[]=origin.getBytes( "ISO-8859-1 ");
origin=new String(d);
String sql1= "select * from basic where idno= ' "+idno+ " ' ";
String sql2= "select * from basic where name= '% "+name+ "% ' ";
String sql3= "select * from basic where origin= ' "+origin+ " ' ";
String sql4= "select * from basic where idno= ' "+idno+ " ' and name= '% "+name+ "% ' ";
String sql5= "select * from basic where idno= ' "+idno+ " ' and origin= ' "+origin+ " ' ";
String sql6= "select * from basic where name= '% "+name+ "% ' and origin= ' "+origin+ " ' ";
String sql7= "select * from basic where idno= ' "+idno+ " ' and name= '% "+name+ "% ' and origin= ' "+origin+ " ' ";
CONTROLDB con=new CONTROLDB();
ResultSet rs;
if(idno== " " & name== " " & origin== " "){response.sendRedirect( "basicsearcherror.jsp ");}
else if(idno== " " & name== " " & origin!= " "){ResultSet rs=con.executeQuery(sql3);}
else if(idno== " " & name!= " " & origin== " "){ResultSet rs=con.executeQuery(sql2);}
else if(idno!= " " & name== " " & origin== " "){ResultSet rs=con.executeQuery(sql1);}
else if(idno!= " " & name!= " " & origin== " "){ResultSet rs=con.executeQuery(sql4);}
else if(idno!= " " & name== " " & origin!= " "){ResultSet rs=con.executeQuery(sql5);}
else if(idno== " " & name!= " " & origin!= " "){ResultSet rs=con.executeQuery(sql6);}
else {
rs=con.executeQuery(sql7);
}
%>
<p align=right> AI 's Studio </p>
<CENTER>
<P> 添加新记录后数据库: </P>
<TABLE border= " " >
<TBODY>
<TR>
<TH width= "50 "> 身份证号 </TH>
<TH width= "100 "> 姓名 </TH>
<TH width= "120 "> 籍贯 </TH>
<TH width= "50 "> 性别 </TH>
<TH width= "50 "> 年龄 </TH>
</TR>
<% if(rs.next())response.sendRedirect( "notfound.jsp ");
else {
do{%>
<TR align= "center ">
<TD> <%=rs.getString(1)%> </TD>
<TD> <%=rs.getString(2)%> </TD>
<TD> <%=rs.getString(3)%> </TD>
<TD> <%=rs.getString(4)%> </TD>
<TD> <%=rs.getString(5)%> </TD>
</TR>
<% }while(rs.next());
}%>
</TBODY>
</TABLE>
</CENTER>
<p align=center> <a href= "basicinfo.jsp "> 返回 </a> </p>
<%
con.close();
%>
编译通不过,总说rs没有初始化,如果在if中初始化rs问题就变成rs变量未定义,不明白该怎么弄了,请大家帮帮忙拉!
btw,如果可以帮我改进一下if/else那些复杂的逻辑就更好啦
[解决办法]
ResultSet rs = null就编译通过了,不过要捕捉NullPointerException的异常
[解决办法]
ResultSet rs;
//> > 这里得初始化为null
if(idno== " " & name== " " & origin== " "){response.sendRedirect( "basicsearcherror.jsp ");}
else if(idno== " " & name== " " & origin!= " ")
{ResultSet rs=con.executeQuery(sql3);}
//> > 这里定义重复了,去掉类型声明ResultSet :{ rs=con.executeQuery(sql3);}