JDBC PreparedStatement 預編譯語句 動態添加條件-SQL參數不定

我是看這個帖子來作的,我只是把過程寫的更小白一點。 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();

完畢

相關文章
相關標籤/搜索