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. как да изчислим правилно

  3. Персонализиране на клавишни комбинации в MySql Workbench

  4. Varbinary срещу Blob в MySQL

  5. mysql е мъртъв, но подсистемата е заключена