2013-01-25 101 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