我正在執行查詢並將結果放入JSONObject以將其返回到EXTJS頁面。代碼的作品,但我不知道這是否是最好或最有效的方式來做到這一點。我會發布我的代碼,請看我是否需要改進它並在哪裏。我是新鮮的程序員,所以原諒明顯的錯誤。提前致謝。這是一個在java中執行查詢的好方法嗎?
public JSONObject execQuery(String invoice, String id){
StringBuffer sb = new StringBuffer();
JSONObject json = new JSONObject();
JSONObject data = new JSONObject();
JSONArray jsArray = new JSONArray();
try{
// get conn
conn = DBConnect.getInstance().dbOracleConnect();
// create query
sb = new StringBuffer("SELECT * FROM table ");
sb.append("WHERE rtrim(invoice) = ? AND ");
sb.append("id = ? ");
ps = conn.prepareStatement(sb.toString());
ps.setString(1, invoice);
ps.setString(2, id);
rs = ps.executeQuery();
while(rs.next()){
json = new JSONObject();
json.put("invoice", rs.getString("invoice"));
json.put("id", rs.getString("id"));
json.put("name", rs.getString("name"));
json.put("gender", rs.getString("gender"));
jsArray.put(json);
// out put will be like [{"invoice":"111", "id":"123", "name":"sam", "gender":"male"}, {...}]
}
data.put("data", jsArray);
// out put will be like {"data":[{"invoice":"111", "id":"123", "name":"sam", "gender":"male"}, {...}]}
}
catch(Exception e){
System.out.println("Error: " + e.toString());
}
finally {
JDBCHelper.close(rs);
JDBCHelper.close(ps);
JDBCHelper.close(conn);
}
return data;
}
你的聯繫是一個領域嗎?您創建並關閉每個查詢。 – Blindy
如果'DBConnect#dbOracleConnect()'每次都創建一個新連接(而不是從池中重用),那麼每個查詢都會產生大量開銷。 –
與問題本身無關,但我更願意在需要時聲明變量,而不是在頂部。例如'JSONObject json = new JSONObject();'可以被刪除。你甚至創建一個實例只能忽略那裏。隨着方法規模的擴大,這種風格大大降低了可讀性。 –