<%
String s1=request.getParameter("cmpname");
String s2=request.getParameter("bname");
String s3=request.getParameter("oname");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","manager");
Statement stmt=con.createStatement();
ResultSet rs=null;
**if( !( s1.equals("") && s2.equals("") && s3.equals("") ))**//only this is executing
{
rs=stmt.executeQuery("select * from comp where operating='"+s3+"' and name='"+s1+"' and prolong='"+s2+"'");
}
*else if( (s1.equals("") && s2.equals("")) || (s1.equals("") && s3.equals("")) || (s2.equals("") && s3.equals("")) )*
{
if( (s1.equals("") && s2.equals("")) )
rs=stmt.executeQuery("select * from comp where operating='"+s3+"'");
else if( (s1.equals("") && s3.equals("")) )
rs=stmt.executeQuery("select * from comp where prolong='"+s2+"'");
else if( (s2.equals("") && s3.equals("")) )
rs=stmt.executeQuery("select * from comp where name='"+s1+"'");
}
*else
{*
if( s1.equals(""))
rs=stmt.executeQuery("select * from comp where operating='"+s3+"' and prolong='"+s2+"'");
else if( s2.equals(""))
rs=stmt.executeQuery("select * from comp where operating='"+s3+"' and name='"+s1+"'");
else if( s3.equals(""))
rs=stmt.executeQuery("select * from comp where name='"+s1+"' and prolong='"+s2+"'");
}
while(rs.next())
{
String componentName=rs.getString("name");
String author=rs.getString("author");
String domain=rs.getString("domain");
String programmingL=rs.getString("prolong");
String opersys=rs.getString("operating");
String fun=rs.getString("functionality");
test=false;
}
%>
仅执行第一个结果集语句。 当第二个和第三个条件成立时,我得到空白页面。 请告诉我正确执行的正确代码。 提前谢谢。
答案 0 :(得分:0)
在上面的代码中,您实际上并未尝试重复使用相同的ResultSet
对象,这就是您所询问的内容。您所要做的就是使用相同的ResultSet
变量。这不是一回事。
无论如何,你的问题实际上与ResultSet
无关。我不认为每个if
中的条件都符合您的意图。特别是
if( !( s1.equals("") && s2.equals("") && s3.equals("") ))
将为true,除非所有三个变量都是空字符串。在这种情况下,您将进入第一个else if
,但您永远不会进入最后的else
。我怀疑你甚至没有测试所有三个变量都是空字符串的情况。
我强烈怀疑在第一个if
,你打算写
if( !( s1.equals("") || s2.equals("") || s3.equals("") ))
与所有三个变量都具有非空值相同。