我在“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;
}`
答案 0 :(得分:2)
我认为你应该试试这个
....
if (user.equals(rs.getString("passWord"))
....
答案 1 :(得分:2)
您的查询应该更加具体,例如"SELECT * FROM representative where user=? and passWord =?";
在prepareStatement
中应设置这些动态值
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;
}
答案 2 :(得分:0)
问题在于使用equals
方法检查if.Always检查字符串中的字符串相等性。 ==
运算符检查两个引用变量是否指向同一个对象。它检查两个参考变量是否相同。 equals方法检查两个对象被认为是有意义的相等。
if(user == rs.getString("passWord")){
should be
if(user.equals(rs.getString("passWord"))){