如何在PreparedStatement中使用多个可选参数填充查询sql?

时间:2011-11-26 08:45:47

标签: java sql

我解释自己......

我有一个填写查询的表单(例如):

SELECT * 
FROM table 
WHERE id=? AND name=? AND sex=? AND year=? AND class=?

但只有“id”是必需的,所有其他参数都是可选的。 如何填写(或重新创建)该查询的红外语句???

1 个答案:

答案 0 :(得分:7)

您必须使用多个预准备语句,或者只是动态创建一个语句,检查您拥有的参数。

像这样:

String query = "SELECT * FROM table WHERE id=?";
if( nameParameter != null ) {
  query += " AND name=?"; //don't never ever directly add the value here
}
...

更新/警告:不要直接将参数值添加到查询字符串,而是使用PreparedStatement等。如上所示,查询字符串应仅包含值的占位符(例如?),以防止SQL注入攻击。

我的意思是, 不要执行以下操作

if( nameParameter != null ) {
  //NEVER EVER, REALLY I MEAN IT, DON'T DO THIS
  query += " AND name='" + nameParameter + "'"; 
}