如何在PreparedStatement中使用多个可选参数填充查询sql?
我自己解释一下……
我有一个填写查询的表单(例如):
SELECT * FROM table WHERE id=? AND name=? AND sex=? AND year=? AND class=?
但只有“id”是强制性的,所有其他参数都是可选的。 如何填写(或重新创建)该查询的prerared语句?
您要么必须使用多个预准备语句,要么只是动态创建一个语句,检查您拥有的参数。
喜欢这个:
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 + "'"; }