请问JDBC中IN语句怎么构建?
JDBC中关于IN的使用问题:
SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN('A','B','C')
我想使用PreparedStatement setObject()设置参数的方法来构建语句SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?)
怎么来构建?
------解决方案--------------------SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?,?,?)
PreparedStatement ps;
……
……
ps.setString(1,'A');
ps.setString(2,'B');
ps.setString(3,'C');
这样就可以了
------解决方案--------------------传数组嘛,多灵活。
------解决方案--------------------
------解决方案--------------------楼上的方法可用,可是如果in的参数的个数有变化,就没办法了,比如现在由3个增加到5个。这个确实没有什么好的方法,如果谁有,我也学习学习。
------解决方案--------------------参数变化只能拼字符串了
------解决方案--------------------SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?)
ps.setString(1,"楼主想要拼的字符串");
------解决方案--------------------办法同上
------解决方案--------------------
------解决方案--------------------6楼的办法不行的
用PreparedStatement 传多参数时,如果参数个数不确定,还想使用?参数避免sql注入,只有一个办法
根据传递的参数个数,拼接sql语句为 SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?, ? ,?, ……)
然后再依次
ps.setString(1, "参数1");
ps.setString(2, "参数2");
ps.setString(3, "参数3");
……
除此以外,没其他办法。
------解决方案--------------------如果不需要考虑sql注入,也可以采用把参数直接拼到sql语句中的办法,不过不推荐
------解决方案--------------------楼主你把你怎么拼的字符串,打出来
------解决方案--------------------同意#9楼
SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?, ? ,?, ……)
传参数我建议传送个数组
String [] param={参数1,参数2,参数3......}
在赋值直接用for循环赋值
for(int i=0;i<=param.ength;i++){
pst.setString(i+1,param[i])
}
------解决方案--------------------
------解决方案--------------------