2012-09-30 27 views
5

我正在爲我的應用程序創建搜索表單。
其中用戶選擇應用於過濾數據的字段。
數字域是可變的,所以我不知道應該有多少?是在SQL查詢的WHERE子句。
如何在where子句中使用條件數可變的preparedStatement在prepared語句中使用可變數量的參數

謝謝

回答

3

PrepardStatements不支持可變數量的條件。一些框架做的是,他們將每個PreparedStatement緩存在查詢關鍵字的Map中。

因此,每次你想運行一個查詢時,你需要建立字符串來創建PreparedStatement,檢查你是否在地圖中(並重用它)或創建一個新的,並將其添加到地圖。

4

如果要在where子句中添加可變數量的條件,請使用 StringBuilder(StringBuffer,如果它的多線程環境)和運行時間取決於您的條件將字符串/附加到字符串。

StringBuilder query = new StringBuilder("Select id, name from Student "); 


if(args >0) 
{ 
    query.append(" where "); //and add more args. 

,後來被其轉換爲字符串

PrepareStatement(query.toString()); 
+0

創建與此查詢準備好的聲明中請注意:此代碼是容易受到SQL注入。 – rook

相關問題