1

我在“mysql”的某个模式中有一个代表表,该表有一个名为“userName”的列。现在为了登录到程序,我需要从框架中的文本字段中获取数据并使用该列中的所有用户名检查它(用户名列有不止一行!)并且如果用户名 jtextfield 中的文本等于其中一个行,则允许登录!我需要一种方法来做到这一点。我写了一些东西,但它不起作用!这里 :

`public static boolean checkRep(String user, String pass) {
        String sql = "SELECT * FROM representative";
        Connection con = DBManager.getConnection();
        PreparedStatement st = null;
        try {
            st = con.prepareStatement(sql);
            ResultSet rs = st.executeQuery(sql);
            while (rs.next()){
                if(user == rs.getString("passWord")){
                    System.out.println("Right");
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return true;
    }`
4

3 回答 3

2

我认为你应该试试这个

....
   if (user.equals(rs.getString("passWord"))
....
于 2012-11-16T06:53:17.713 回答
2

您的查询应该更具体,例如"SELECT * FROM representative where user=? and passWord =?"; And inprepareStatement应该设置那些动态值

st = con.prepareStatement(sql);
st.setString(1,user);
st.setString(2,pass);

你需要检查结果,比如 -

 //no while
if(rs.next()){
     System.out.println("user found in db");
     return true;
}
于 2012-11-16T06:54:14.150 回答
0

equals问题在于 if.Always 使用方法检查字符串相等性检查中的字符串相等性。==运算符检查两个引用变量是否指向同一个对象。它检查两个参考变量是否相同。equals 方法检查两个对象是否被认为有意义地相等。

if(user == rs.getString("passWord")){

should be

if(user.equals(rs.getString("passWord"))){
于 2012-11-16T06:51:09.053 回答