Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

JDBC हमेशा MySQL तालिका की अंतिम पंक्ति का परीक्षण करता है?

क्योंकि आप संपूर्ण . को ढो रहे हैं जावा की स्मृति में डेटाबेस तालिका नीचे और परीक्षण प्रत्येक थोड़ी देर के लूप में पंक्ति। यदि कोई मेल मिलता है तो आप लूप को नहीं तोड़ते हैं ताकि वह अंतिम पंक्ति तक बूलियन परिणाम को ओवरराइट करना जारी रखे।

उस ने कहा, आप वास्तव में जावा में तुलना नहीं करना चाहते हैं। बस SQL WHERE का इस्तेमाल करें खंड . यह बहुत है अधिक कुशल और वास्तव में वह कार्य जो डीबी को करना चाहिए। जावा में डीबी के काम को लेने की कोशिश मत करो, यह केवल अक्षम होने जा रहा है।

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

आप देखते हैं कि मैंने कुछ सुधार किए हैं:

  1. तैयार बयान का प्रयोग करें।
  2. इक्वलसिग्नोरकेस का प्रयोग न करें। "FooBar" का पासवर्ड "foobar" जैसा नहीं होना चाहिए।
  3. लीक होने से बचने के लिए समान दायरे में संसाधनों को धीरे-धीरे प्राप्त करें और बंद करें।
  4. इसे एक स्वतंत्र और पुन:प्रयोज्य गैर-स्थैतिक डीएओ पद्धति में रखें।

JDBC को उचित तरीके से उपयोग करने के बारे में अधिक जानने के लिए आपको यह मिल सकता है बुनियादी ट्यूटोरियल उपयोगी।



  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 में, अंतिम एसक्यूएल पैरामीट्रिज्ड क्वेरी कैसे जांचें?

  2. mysqli - गैर-ऑब्जेक्ट mysqli पर एक सदस्य फ़ंक्शन fetch_array () के लिए fetch_Array त्रुटि कॉल

  3. COALESCE() रिक्त (लेकिन शून्य नहीं) फ़ील्ड के लिए

  4. पंक्ति के मान के योग से SQL को सीमित करें

  5. MySQL में VALUES स्टेटमेंट का उपयोग करते समय "ERROR 1136 (21S01):कॉलम काउंट वैल्यू काउंट से मेल नहीं खाता" को ठीक करें।