Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JDBC selalu menguji baris terakhir tabel MySQL?

Karena Anda sedang mengangkut seluruhnya tabel database ke dalam memori Java dan menguji setiap baris dalam perulangan while. Anda tidak memutus loop jika kecocokan ditemukan sehingga terus menimpa hasil boolean hingga dengan baris terakhir.

Yang mengatakan, Anda benar-benar tidak ingin melakukan perbandingan di Jawa. Cukup gunakan SQL WHERE klausa . Itu banyak lebih efisien dan benar-benar tugas yang seharusnya dilakukan DB. Jangan mencoba mengambil alih pekerjaan DB di Java, itu hanya akan menjadi tidak efisien.

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;
}

Anda melihat bahwa saya membuat beberapa peningkatan:

  1. Gunakan pernyataan yang sudah disiapkan.
  2. Jangan gunakan equalsignorecase. Kata sandi "FooBar" TIDAK boleh sama dengan "foobar".
  3. Dapatkan dan tutup sumber daya secara perlahan dalam cakupan yang sama untuk menghindari kebocoran.
  4. Dapatkan dalam metode DAO non-statis yang independen dan dapat digunakan kembali.

Untuk mempelajari lebih lanjut tentang menggunakan JDBC dengan cara yang benar, Anda dapat menemukan ini tutorial dasar berguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Mendapatkan nomor baris (peringkat) untuk baris tertentu

  2. Melakukan perhitungan di MySQL vs PHP

  3. Skema basis data MySQL hash

  4. CakePHP menggunakan beberapa database untuk model

  5. Bagaimana cara memilih baris pertama untuk setiap grup di MySQL?