我是看這個帖子來作的,我只是把過程寫的更小白一點。 JDBC查詢動態封裝html
實現的效果是:動態添加xx=?這些條件java
SELECT id FROM t_table WHERE id=? AND sex = ?
拼接預編譯語句sql
開始咱們要用到兩個Vector來存儲 參數值和參數類型.net
Vector<Object> vParamValue = new Vector<Object>(); Vector<String> vParamType = new Vector<String>();
接着聲明一個帶初始條件的SQL字符串,目的是以後拼接條件時,就不用考慮是否加AND的問題code
String sql = "SELECT id FROM t_table WHERE id > 0 ";
接着判斷條件參數是否獲取到,以決定是否拼接該條件htm
if(!name.equals("")) { sql += " AND name=? "; vParamValue.add(name); vParamType.add("String"); conditionCount++;//用來統計拼接的條件個數,方便後面給預編譯語句的條件參數遍歷賦值 }
再接着是給語句對象參數賦值對象
(以前不明白這裏怎麼把參數一一對應起來的。 後來想了下,其實很簡單。blog
由於SQL條件位置與放在Vector中的參數值,參數類型,三者是一一一對應的。)字符串
for(int i = 0; conditionCount > i; i++) { if("String".equals(vParamType.get(i).toString())) { ps.setString(i+1, vParamValue.get(i).toString());//參數因此從1開始,因此是i+1 } if("int".equals(vParamType.get(i).toString())) { ps.setInt(i+1, Integer.parseInt(vParamValue.get(i).toString())); } }
最後就是執行啦get
rs = ps.executeQuery();
完畢