本文介紹了在Java中準備動態語句的正確方法的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在根據通過查詢字符串傳遞的值準備一條SQL語句。(我在用這出戲!框架。基本上,我遇到的(不是真正的問題,只是我不太喜歡的事情)是,當我想在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時,這就變得荒謬了。
有沒有更簡單的方法使它更靈活,以便我知道如何更好地填寫所有?
?
推薦答案
示例(太長,無法進行注釋):
String sql = "SELECT * FROM foobar_table WHERE 1 = 1 ";
ArrayList paramList = new ArrayList();
if ( foo != 0 ) {
sql += " AND foo=?";
paramList.add(foo);
}
if ( !bar ) {
sql += " AND bar=?";
paramList.add(bar);
}
try{
PreparedStatement getStmt = con.prepareStatement(sql);
int index = 1;
for (Object param : paramList) {
getStmt.setObject(index, param);
index++;
}
// execute
} catch (SQLException e ){
e.printStackTrace();
}
這篇關于在Java中準備動態語句的正確方法的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,