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();

完毕

相关文章
相关标签/搜索