Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dynamicznie tworzyć przygotowane zestawienie - i ponownie wykorzystać zapytanie

Zakładając, że już potrafisz dynamicznie tworzyć ciągi SQL (wstawiając ? we właściwej pozycji w razie potrzeby), sugeruję użycie Map aby przekazać parametry, w których key będzie kolejność parametrów (1,2,3 i tak dalej). Coś takiego:

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

}

Wreszcie możesz użyć Database w następujący sposób:

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. MySQL — zwiększ wartość kolumny lub wstaw dane, jeśli nie istnieją

  2. mysql:odwoływanie się do kolumn po numerach

  3. Jak mogę umieścić klauzulę MySQL IN w zapytaniu Elasticsearch?

  4. 'LIKE ('%this%' LUB '%that%') i coś=inne' nie działa

  5. MySQL - kod błędu 1215, nie można dodać ograniczenia klucza obcego