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

ログインは、データベースの最後のユーザーに対してのみ機能します

    DBテーブル全体をJavaのメモリにコピーし、whileで比較を行っています。 すべてのレコードをループします。 whileを中止していません レコードと一致する場合はループするため、残りのレコードをループし続けるため、pagename 毎回「開始」で上書きされます。

    breakを追加する必要があります ステートメント:

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

    または、より良いのは、SQLに設計された仕事をさせ、正確にを選択して返すことです。 必要なデータ:

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

    それはより効率的で賢明です。



    1. SQLServer内部結合の基本と例

    2. 同じテーブル(SQL Server)の2つの行を比較するにはどうすればよいですか?

    3. エラー:mysqlclientのインストール時にコマンド'x86_64-linux-gnu-gcc'

    4. Oracleの列からデフォルト値を削除するにはどうすればよいですか?