0

私はJavaEEが初めてで、データベースを使用しようとしています。データベースからユーザー名とパスワードを確認しているだけです。コードは次のとおりです。

protected void CheckUser(String username, String password)
{

    try {
        connect();
        PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
        "SELECT * FROM Users where username = ? AND password = ?");
        checkDB.setString(1,username);
        checkDB.setString(2,password);
        ResultSet rs =null;
        rs=(ResultSet) checkDB.executeQuery();
        if(rs !=null)
        {
            System.out.println("heheheh");
        }
        else
        {
            System.out.println("awwwwww");
        }

    } catch (Exception e) {
        System.out.println("cannot connect");
        e.printStackTrace();
    }

}

ログイン情報が正しくない場合でも、このコードはブロックされた場合に常に入力されます。私はそれについて何ができますか?

ありがとう

4

2 に答える 2

3

executeQuery()常にResultSetインスタンスを返します。

呼び出しnext()て false を返すかどうかを確認することにより、行があるかどうかを確認します。

また、結果セットを閉じる必要があります。

于 2013-07-01T22:16:29.373 に答える
1

行が返されなくても、オブジェクトResultSetは になりません。行がない場合、最初の呼び出しで返される のメソッドをnull使用します。nextResultSetfalse

さらに、終了したら and を閉じる必要がありResultSetますPreparedStatement

于 2013-07-01T22:16:32.320 に答える