Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

JDBC luôn kiểm tra hàng cuối cùng của bảng MySQL?

Bởi vì bạn đang vận chuyển toàn bộ bảng cơ sở dữ liệu vào bộ nhớ của Java và thử nghiệm mọi hàng trong vòng lặp while. Bạn không phá vỡ vòng lặp nếu tìm thấy một kết quả phù hợp để nó tiếp tục ghi đè kết quả boolean cho đến hàng cuối cùng.

Điều đó nói rằng, bạn thực sự không muốn thực hiện phép so sánh trong Java. Chỉ cần sử dụng SQL WHERE mệnh đề . Đó là nhiều hiệu quả hơn và thực sự là nhiệm vụ mà một DB phải làm. Đừng cố gắng tiếp quản công việc của DB trong Java, nó sẽ chỉ kém hiệu quả.

public boolean exists(String username, String password) throws SQLException {
    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    boolean exists = false;

    try {
        connection = database.getConnection();
        preparedStatement = connection.prepareStatement("SELECT id FROM client WHERE username = ? AND password = ?");
        preparedStatement.setString(1, username);
        preparedStatement.setString(2, password);
        resultSet = preparedStatement.executeQuery();
        exists = resultSet.next();
    } finally {
        close(resultSet);
        close(preparedStatement);
        close(connection);
    }

    return exists;
}

Bạn thấy rằng tôi đã thực hiện một số cải tiến:

  1. Sử dụng câu lệnh chuẩn bị.
  2. Không sử dụng ký tự viết hoa. Mật khẩu của "FooBar" KHÔNG được giống với "foobar".
  3. Thu thập và đóng các tài nguyên trong cùng phạm vi một cách nhẹ nhàng để tránh bị rò rỉ.
  4. Có nó trong một phương pháp DAO không tĩnh độc lập và có thể sử dụng lại.

Để tìm hiểu thêm về cách sử dụng JDBC đúng cách, bạn có thể tìm thấy cái này hướng dẫn cơ bản hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt cuộc gọi trong xóa theo tầng

  2. Làm cách nào để lưu ký hiệu '€' trong MySQL bằng PHP?

  3. Làm cách nào để hiển thị chữ cái đầu tiên dưới dạng chữ hoa?

  4. Không tìm thấy tệp MySql mysql.h trong VS2008 C ++ <Câu hỏi dành cho người mới bắt đầu>

  5. cấp quyền truy cập từ xa cơ sở dữ liệu MySQL từ bất kỳ địa chỉ IP nào