【发布时间】:2011-11-26 08:45:46
【问题描述】:
我自己解释一下……
我有一个填写查询的表格(例如):
SELECT *
FROM table
WHERE id=? AND name=? AND sex=? AND year=? AND class=?
但只有“id”是强制性的,所有其他参数都是可选的。 我如何填写(或重新创建)该查询的 prerared 语句???
【问题讨论】:
我自己解释一下……
我有一个填写查询的表格(例如):
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 + "'";
}
【讨论】: