首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

请教JDBC中IN语句如何构建

2012-01-14 
请问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');

这样就可以了
[解决办法]
传数组嘛,多灵活。
[解决办法]

探讨
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,"楼主想要拼的字符串");



[解决办法]
办法同上
[解决办法]
探讨
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])
}
[解决办法]
探讨

同意#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])
}
……

[解决办法]
探讨
引用:

同意#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.se……

热点排行