我正在从通过查询字符串传递的值准备 SQL 语句。(我正在使用 Play!框架。基本上我遇到的(不是真正的问题,只是我不太喜欢的东西)是当我想?
在 SQL 字符串中使用并稍后使用动态值设置它们时。
这就是我所拥有的:
String sql = "SELECT * FROM foobar_table WHERE";
if ( foo != 0 )
sql += " AND foo=?";
if ( !bar )
sql += " AND bar=?";
try{
PreparedStatement getStmt = con.prepareStatement(sql);
if ( foo != 0 )
getStmt.setInt(1,foo);
if ( foo != 0 && !bar )
getStmt.setBoolean(2, bar);
else
getStmt.setBoolean(1, bar);
} catch (SQLException e ){
e.printStackTrace();
}
这确实有效,但正如您所见,它不是很直观。当有 2 个动态值时没关系,但是当你达到 5 或 6 个时,这会变得很荒谬。
有没有更简单的方法让它更灵活,以便我知道如何以?
更好的方式填写所有内容?