sql >> データベース >  >> RDS >> Mysql

MySQLから空のResultSetを検出する方法は?

    ResultSet#next() trueを返します。例:

    public boolean exist(String username, String password) throws SQLException {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        boolean exist = false;
    
        try {
            connection = database.getConnection();
            statement = connection.prepareStatement("SELECT id FROM user WHERE username = ? AND password = MD5(?)");
            statement.setString(1, username);
            statement.setString(2, password);
            resultSet = statement.executeQuery();
            exist = resultSet.next();
        } finally {
            close(resultSet, statement, connection);
        }
    
        return exist;
    }
    

    次のように使用できます

    if (userDAO.exist(username, password)) {
        // Proceed with login?
    } else {
        // Show error?
    }
    

    または、完全に問題のあるUserを返すようにすることもできます。 またはnull ない場合。例:

    public User find(String username, String password) throws SQLException {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        User user = null;
    
        try {
            connection = database.getConnection();
            statement = connection.prepareStatement("SELECT id, username, email, dateOfBirth FROM user WHERE username = ? AND password = MD5(?)");
            statement.setString(1, username);
            statement.setString(2, password);
            resultSet = statement.executeQuery();
    
            if (resultSet.next()) {
                user = new User(
                    resultSet.getLong("id"),
                    resultSet.getString("username"),
                    resultSet.getString("email"),
                    resultSet.getDate("dateOfBirth"));
            }
        } finally {
            close(resultSet, statement, connection);
        }
    
        return user;
    }
    

    User user = userDAO.find(username, password);
    
    if (user != null) {
        // Proceed with login?
    } else {
        // Show error?
    }
    



    1. このprepareステートメントをWordpress$wpdbのプレースホルダーを使用するように変換するにはどうすればよいですか?

    2. Oracleを使用してDjangoで自動テストを作成する際のORA-65096エラーの修正

    3. 新鮮なWAMPインストールの奇妙なキャラクター?

    4. Access 2016で式ビルダーを使用するにはどうすればよいですか?