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

MySql बहुत अधिक कनेक्शन

आपके दृष्टिकोण के साथ, यदि कोई अपवाद पहले . फेंका जाता है, तो कनेक्शन कभी भी बंद नहीं होगा conn.close() कहा जाता है। आपको इसे (और कथन और परिणामसेट) एक try . में प्राप्त करने की आवश्यकता है ब्लॉक करें और इसे finally . में बंद करें खंड मैथा। finally में कोई भी कोड होगा हमेशा अपवाद की परवाह किए बिना निष्पादित किया जाना चाहिए या नहीं। इससे आप सुनिश्चित कर सकते हैं कि महंगे संसाधन बंद हो जाएंगे।

यहाँ एक पुनर्लेखन है:

public int getSiteIdFromName(String name, String company) throws DataAccessException, java.sql.SQLException {
    Connection conn = null;
    Statement smt = null;
    ResultSet rs = null;
    int id = 0;
    try {
        conn = this.getSession().connection();
        smt = conn.createStatement();
        String query = "SELECT id FROM site WHERE name='" + name + "' and company_id='" + company + "'";
        rs = smt.executeQuery(query);
        rs.next();
        id = rs.getInt("id");
    } finally {
        if (rs != null) try { rs.close(); } catch (SQLException logOrIgnore) {}
        if (smt != null) try { smt.close(); } catch (SQLException logOrIgnore) {}
        if (conn != null) try { conn.close(); } catch (SQLException logOrIgnore) {}
    }
    return id;
}

उस ने कहा, यह कोड SQL इंजेक्शन के प्रति संवेदनशील है। हमले . एक PreparedStatement का प्रयोग करें Statement . के बजाय ।

यह भी देखें :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब हमारे पास समग्र अनुक्रमणिका होती है तो क्या सामान्य MySql अनुक्रमणिका आवश्यक होती है?

  2. PHP - MySQL PDO अधिकतम क्वेरी आकार

  3. पायथन 2.7 और MySQLdb का उपयोग करके MySQL में ब्लॉब कॉलम में बाइनरी डेटा डालने पर एन्कोडिंग चेतावनी से कैसे बचें?

  4. php क्वेरी नहीं चल रही है?

  5. मैं एक mysql चर के साथ mysql स्रोत कमांड का उपयोग कैसे करूं?