【发布时间】:2021-11-21 00:24:54
【问题描述】:
我正在根据通过查询字符串传递的值准备一条 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 个时,这会变得很荒谬。
有没有更简单的方法让它更灵活,以便我知道如何以更好的方式填写所有??
【问题讨论】:
标签: java sql jdbc prepared-statement playframework-2.0