从servlet获得响应

时间:2013-01-25 06:01:08

标签: java android servlets

我正在使用以下代码从servlet获取响应。它将检查变量“get”中的给定名称是否在特定表中,如果存在则打印1

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部分。

实施例: 如果“kannan”在表中呈现2次,则Servlet输出为

1 1

现在在android应用程序中,显然else部分被执行,因为响应不是1。 这只是两个相同名称的情况。该表可能包含10个以上的相同名称。 如果有10个相同的名称,则servlet输出为

1 1 1 1 1 1 1 1 1 1

所以我需要检查所有。 所以我需要在if条件下进行更改,但我不知道该怎么做。有人请回答。

提前致谢

4 个答案:

答案 0 :(得分:2)

而不是while循环使用

if(rs.next())

现在只打印一次。

android没有变化

答案 1 :(得分:1)

servlet中的

执行此操作

如果(rs.next())

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

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

           }

}

如果记录存在,此循环现在只运行一次。

答案 2 :(得分:1)

我不明白为什么当你的SQL查询中有get.equals(username)子句时,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注入。

所以最好更好地使用预备语句。

答案 3 :(得分:0)

尝试if(rs.next()), 这肯定会帮助你