如何从select查询中获取另一个字符串?

时间:2012-11-19 10:17:15

标签: java mysql string jsp

我想从列号中获取字符串。 4从我的数据库中检查用户权限。

我可以使用rs.getString(index)从第4列获取数据吗? 我想检查用户的权限...所以如果列数据等于4,页面将被重定向到AdminControlPanel.jsp 但是,这段代码不起作用:(

String user=request.getParameter("login");
String pass=request.getParameter("password");
 Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/android","root","root");  
           Statement st=con.createStatement();
           ResultSet rs=st.executeQuery("select * from users where login='"+user+"' and password='"+pass+"'");
           String p = rs.getString(4);                   
           int count=0;
           while(rs.next()){
           count++;
          }
      if(count>0 && p == "4"){
             // out.println(rs);
                           response.sendRedirect("AdminControlPanel.jsp");
                      }
          else{
               out.println("aaa");
               response.sendRedirect("#");
           }
        }
                 catch(Exception e){
    System.out.println(e);
}

3 个答案:

答案 0 :(得分:0)

你想要

while (rs.next()) {
   String val = rs.getString(4);
   ....

请注意,迭代ResultSet会遍历。对于每一行,列索引从“1”开始。

然而,按列名称获取更安全,因为您的SQL查询既没有指定列也没有指定它们返回的顺序:

String val = rs.getString("COLUMN_NAME");

我从下面看到你需要一个整数。查看ResultSet的文档了解更多信息,但是:

int val = rs.getInt("COLUMN_NAME");

顺便说一句,我不认为您在上面关闭了ResultSet / Statement / Connection。如果你不是,那么你需要!

答案 1 :(得分:0)

String p = rs.getString(4);   // This should be inside your while                  
int count=0;
while(rs.next()){
    count++;
}
  • 您应该在while循环中移动第一行。你不能 获取行的列,直到将光标移动到该行 使用res.next()

  • 此外,由于您的数据库理想情况下应该只有one个记录 usernamepassword的组合。所以,你可以更好地使用 if代替while

  • 你真的不需要count变量。

因此,您的代码应为: -

ResultSet rs=st.executeQuery("select * from users where login='"+user+"' " +
                              "and password='"+pass+"'");
if (rs.next()) {
    String p = rs.getString(4);  // Note that using Column name is a better idea

    // or rs.getInt(4) if the column type is `int`

    if(p.equals("4")) {   // Use equals method to compare string content
         response.sendRedirect("AdminControlPanel.jsp");

    } else{
         out.println("aaa");
         response.sendRedirect("#");
    }
}

另请注意,您应该使用equals方法比较字符串。 if (p == "4")会给你错误的结果。 ==运算符不会比较字符串的内容,而是比较用于引用的内容。

答案 2 :(得分:0)

您正在比较两个String对象,而不是检查String中的值。

只需将代码更改为 p.equals(“4”)并尝试。