1

我正在使用以下代码从 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 部分被执行,因为 response 不是 1。这只是两个相同名称的情况。该表可能包含超过 10 个相同的名称。如果有 10 个相同的名称,则 servlet 输出为

1 1 1 1 1 1 1 1 1 1

所以我需要检查所有。所以我需要改变我的 if 条件,但我不知道该怎么做。有人请给出答案。

提前致谢

4

4 回答 4

2

而不是 while 循环使用

if(rs.next())

现在它只会打印一次。

安卓没有变化

于 2013-01-25T06:58:49.567 回答
1

在 servlet 中执行此操作

如果(rs.next())

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

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

           }

}

如果记录存在,则此循环现在仅运行 1 次。

于 2013-01-25T06:06:47.683 回答
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 注入影响的。

所以最好改用准备好的语句。

于 2013-01-25T06:08:19.997 回答
0

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

于 2013-01-25T07:13:41.370 回答