2014-12-03 60 views
-2
<% 
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; 
} 
%> 

只有第一個結果集語句正在執行。 當第二個和第三個條件變爲真時,我正在變空白頁。 請爲我正確執行正確的代碼。 在此先感謝。我可以在if-else梯形圖中使用不同的查詢使用相同的ResultSet語句對象嗎?

+0

你能告訴我們你想要做什麼嗎?這個問題並不完全清楚。 – 2014-12-03 02:44:46

+0

<% String s1 = request.getParameter(「cmpname」); String s2 = request.getParameter(「bname」); String s3 = request.getParameter(「oname」); //連接到oracle語句 // ResulSet rs; (「」select * from comp where operation ='「);如果(!(s1.equals(」「)&& s2.equals(」「)&& s3.equals(」「))) { \t rs = stmt.executeQuery + s3 +「'and name ='」+ s1 +「'and prolong ='」+ s2 +「'」); (s1.equals(「」)&& s2.equals(「」))||(s1.equals(「」)&& s3.equals(「」))||(s2.equals(「 「)&& s3.equals(」 「))){ \t如果((s1.equals(」 「)&& s2.equals(」 「))) \t \t RS = stmt.executeQuery(」 從排版選擇* where operating ='「+ s3 +」'「); } – 2014-12-03 02:53:02

回答

0

在上面的代碼中,你實際上並沒有試圖重複使用同一個對象ResultSet,這是你問到的。你所要做的就是使用相同的ResultSet變量。這不是一回事。

無論如何,你的問題實際上與ResultSet s無關。我不認爲每個if的條件都是你的意圖。特別是

if(!( s1.equals("") && s2.equals("") && s3.equals("") )) 

將成立,除非所有三個變量都是空字符串。在那種情況下,你會進入你的第一個else if,但你永遠不會到最後的else。我懷疑你甚至沒有測試這三個變量都是空字符串的情況。

我強烈懷疑,在第一if,你打算寫

if(!( s1.equals("") || s2.equals("") || s3.equals("") )) 

這等於說,所有這三個變量具有非空值。

+0

非常感謝 – 2015-02-01 14:19:56

相關問題