Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php एक बार चलाएं और mysql डेटाबेस में दो बार डालें

  2. स्ट्रिंग फ़ील्ड से MySQL में दिनांक परिवर्तित करना

  3. निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 1000 बाइट्स है

  4. MySQL में तिथियों के बीच अंतराल दिखाएं

  5. क्या मेरे ASP.NET ऐप में प्रोग्रामेटिक रूप से यह पता लगाने का कोई आसान तरीका है कि MySQL डीबी सर्वर डाउन है या नहीं?