Ако приемем, че вече можете да създавате динамично 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();