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

गतिशील रूप से तैयार कथन कैसे बनाएं - और क्वेरी का पुन:उपयोग करें

यह मानते हुए कि आप पहले से ही SQL स्ट्रिंग को गतिशील रूप से बनाने में सक्षम हैं (? सम्मिलित करते हुए) आवश्यकतानुसार सही स्थिति में), मेरा सुझाव है कि Map का उपयोग करें पैरामीटर में पास करने के लिए जहां key पैरामीटर क्रम (1,2,3 और इसी तरह) होगा। कुछ इस तरह:

public class Database{
    private String _sqlString;
    private Map<Integer,Object> _parameters;

    public Database(String sql){
        _sqlstring = sql;
    }

    public void setParameters(Map<Integer,Object> param){
        _parameters = param;
    }

    /* 
     * I'm assuming you already have a method like this
     */
    public List processQuery(){
        List results = new ArrayList();
        /* 
         * establish connection here
         */
        PreparedStatement preparedStatement = connection.prepareStatement(this._sqlString);

        if(_parameters != null){
            /* 
             * Iterate over the map to set parameters 
             */
            for(Integer key : _parameters.keySet()){
                preparedStatement.setObject(key, _parameters.get(key));
            }
        }            

        ResultSet rs = preparedStatement.executeQuery();
        /*
         * process the ResultSet
         */
        return results;
    }

}

अंत में आप Database . का उपयोग कर सकते हैं इस प्रकार:

String sql = "SELECT FULLNAMES FROM CUSTOMER WHERE ADDRESS = ? OR ADDRESS = ?";

Map<Integer,Object> param = new HashMap<>();
param.put(1,"NEW YORK");
param.put(2,"CHICAGO");

Database db = new Database(sql);
db.setParameters(param);
List customers = db.processQuery();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ / पीएचपी / माईएसक्यूएल में प्रदर्शन:लेनदेन बनाम प्रत्यक्ष निष्पादन

  2. MySQL से एक्सएमएल आउटपुट

  3. सहसंबद्ध के साथ COUNT(DISTINCT) द्वारा प्रतिशतक जहां केवल एक दृश्य के साथ काम करता है (या DISTINCT के बिना)

  4. फ़ील्ड नामों के आसपास बैकटिक्स का उपयोग करना

  5. आप डेटाटाइम फ़ील्ड का यूटीसी कैसे प्राप्त करते हैं?