आप संपूर्ण 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";
}
यह अधिक कुशल और समझदार है।