1

「mysql」のいくつかのスキーマに代表のテーブルがあり、そのテーブルには「userName」という名前の列があります。プログラムにログインするには、フレーム内のテキストフィールドからデータを取得し、その列のすべてのユーザー名でデータを確認する必要があります(ユーザー名列には複数の行があります)。ユーザー名jtextfieldのテキストがこれらの行の1つと等しいかどうかを確認します。 、その後、ログインが許可されます!それを行う方法が必要です。私は何かを書いたが、それはうまくいかない!ここ :

`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 =?"; である必要があり、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;
}
于 2012-11-16T06:54:14.150 に答える
0

問題は、if.Always メソッドを使用して文字列の等価性をチェックする文字列の等価性チェックにありますequals==演算子は、2 つの参照変数が同じオブジェクトを指しているかどうかをチェックします。両方の参照変数が同一かどうかをチェックします。equals メソッドは、両方のオブジェクトが有意に等しいと見なされるかどうかをチェックします。

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

should be

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