Java 如何为PreparedStatement动态赋值?
当前情景:Java 如何为PreparedStatement动态赋值?,java,sql,prepared-statement,Java,Sql,Prepared Statement,当前情景: String query= "select emp_role from emp where emp_id = ?"; String query= "select address.phone_no from address, emp where address.address_id=emp.address_id and emp.emp_id = ?"; PreparedStatement prepatedStatement = connection.prepareStatement(
String query= "select emp_role from emp where emp_id = ?";
String query= "select address.phone_no from address, emp where address.address_id=emp.address_id and emp.emp_id = ?";
PreparedStatement prepatedStatement = connection.prepareStatement(query);
prepatedStatement.setInt(1, empId);
ResultSet rs = prepatedStatement.executeQuery();
预期情景:
String query= "select emp_role from emp where emp_id = ?";
String query= "select address.phone_no from address, emp where address.address_id=emp.address_id and emp.emp_id = ?";
PreparedStatement prepatedStatement = connection.prepareStatement(query);
prepatedStatement.setInt(1, empId);
ResultSet rs = prepatedStatement.executeQuery();
当我有多个输入的查询时,如下面提到的
String query= "select emp_role from emp where emp_id = ? and emp_plan = ?";
String query= "select emp_id,emp_name from (select emp_id,emp_name from emp_1 where emp_1_id = ?)union(select emp_id,emp_name from emp_2 where emp_2_id = ?)";
我需要一个通用的prepatedStatement逻辑来完成这项工作
看看-
这个逻辑工作得很好,但我仍然需要设置显式映射的值 没有自动完成这些任务的方法,但您可以通过以下方式进行改进:
List<String> empParameters = getMeParameters();//may be factory here?
ResultSet rs = getResultSet(.....);
......
private ResultSet getResultSet(PreparedStatement prepatedStatement, List<String> empParameters) {
int i = 0;
for (String empParameter : empParameters) {
prepatedStatement.setInt(i++, empParameter);
}
return prepatedStatement.executeQuery();
}