クエリ文字列を介して渡された値から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になると、これはばかげています。
これをより柔軟にして、すべてをより適切に入力する方法を知るための、より簡単な方法はあり?
ますか?