Giả sử bạn đã có thể tạo chuỗi SQL động (chèn ?
ở đúng vị trí cần thiết), tôi khuyên bạn nên sử dụng Map
để chuyển các tham số có khóa key
sẽ là thứ tự tham số (1,2,3, v.v.). Một cái gì đó như thế này:
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;
}
}
Cuối cùng, bạn có thể sử dụng Database
như sau:
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();