2013-01-25 178 views
1

我使用以下代碼從servlet獲取響應。它將檢查變量「get」中的給定名稱是否在特定表格中,如果存在,則打印1從servlet獲得響應

部分的servlet代碼:

get = request.getParameter("nam");// such as get="kannan" 
try { 
    // Connection code 

    ResultSet rs = stmt 
      .executeQuery("select * from newfarmer where rname='" + get 
        + "'"); 
    while (rs.next()) { 
     username = rs.getString("rname"); 

     if (get.equals(username)) { 
      out.println(1); 
     } 

    } 
} catch (Exception e) { 
    out.println(e.toString()); 
} 

在我的Android應用程序,我檢查這個迴應如下:

response = CustomHttpClient.executeHttpPost(
     "http://moberp.svsugar.com:8080/androidservlt/Modify", 
     postParameters); 
String res = response.toString(); 
res = res.trim(); 

if (res.equals("1")) { 
    flag = 1; 
    Toast.makeText(getBaseContext(), "Correct", Toast.LENGTH_LONG) 
      .show(); 
} else { 
    flag = 2; 
    Toast.makeText(getBaseContext(), "please enter correct Ryot name", 
      Toast.LENGTH_LONG).show(); 
} 

它非常適用於單條記錄。我的意思是,在「newfarmer」表中,如果「rname」由多個相同名稱組成,則只有else部分被執行。

示例: 如果「坎南」呈現2倍,在表的Servlet輸出作爲

1 1 

現在,在機器人應用,清楚地執行else部分因爲響應不爲1 這僅僅是兩個相同名稱的情況。該表可能包含超過10個相同的名稱。 如果10相同的名字,然後servlet的輸出是

1 1 1 1 1 1 1 1 1 1 

所以我需要檢查所有。 所以我需要改變我的條件,但我不知道該怎麼做。有人請回答。

在此先感謝

在servlet的
+0

'的ResultSet RS = stmt.executeQuery( 「從紐法默選擇*其中RNAME = ' 」+得+「'」);' [小巴比表](http://xkcd.com/327/)再次發生。 –

+0

你能更具體嗎? 你說你需要檢查所有。檢查所有內容?當你有多個名字時,你想要發生什麼? – GeorgeVremescu

回答

2

,而不是while循環使用

if(rs.next()) 

現在只打印一次。

在android系統

1

做到這一點

如果(rs.next())

  { 
       username=rs.getString("rname"); 

      if(get.equals(username)) 
      { 
        out.println(1); 
      } 

      } 

}

這個循環將僅運行1現在如果記錄時間存在。

1

我不明白爲什麼get.equals(username)在您的SQL查詢中有where子句時會評估爲false?

所以就試試這個。

if(rs.next()) 
{  
       // The above condition will make the code inside if executed 
       // only if any matching record is found and 
       //hence it will print `1` only once 
       //if any matching record is found. 
    username=rs.getString("rname"); 

    if(get.equals(username)) 
    { 
     out.println(1); 
    } 

} 

而且使用的是stmt.executeQuery("select * from newfarmer where rname='"+get+"'"); 這是容易受到SQL注入。

所以最好使用prepared語句來代替。

0

嘗試if(rs.next())沒有變化, 這一定會幫助你

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你可以隨時評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/faq#reputation),你將能夠[評論任何帖子](http://stackoverflow.com/privileges/comment)。 – greeness

+0

感謝您的幫助 – Akshay