यह मानते हुए कि आप पहले से ही 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();