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

Login hanya berfungsi untuk pengguna terakhir di database

Anda menyalin seluruh tabel DB ke dalam memori Java dan melakukan perbandingan dalam while loop atas semua catatan. Anda tidak membatalkan while loop ketika ada kecocokan dengan catatan, sehingga terus mengulang catatan yang tersisa dan begitu juga pagename ditimpa dengan "mulai" setiap saat.

Anda perlu menambahkan break pernyataan:

if (results.getString(2).equals(password) && results.getString(1).equals(username)) { 
    pagename="main";
    break;
}

Atau, lebih baik, biarkan SQL melakukan pekerjaan yang dirancang untuknya, memilih dan mengembalikan tepat data yang Anda butuhkan:

preparedStatement = connection.prepareStatement("SELECT id FROM user WHERE username=? AND password=MD5(?)");
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
resultSet = preparedStatement.executeQuery();

if (resultSet.next()) {
    pagename = "main";
}
else {
    pagename = "start";
}

Itu lebih efisien dan masuk akal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri SQL yang tidak efisien

  2. mysql pilih baris yang berbeda tetapi terbaru

  3. Gabung dalam 2 tabel dengan nama kolom yang sama

  4. koneksi database laravel mengembalikan kesalahan indeks yang tidak ditentukan

  5. Bagaimana saya bisa mendeteksi baris yang berlebihan dalam tabel?