请问JDBC中IN语句怎么构建?JDBC中关于IN的使用问题:SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(A,B
请问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])
}
[解决办法][解决办法]