日期:2014-05-20  浏览次数:20818 次

关于prepareStatement的setString问题!急,请各位高手关注一下
psmtUpdate.setString(1,   "1,2,3 ");

psmtUpdate.executeQuery();

SQL:   SELECT   *   FROM   USER   WHERE   USER_ID   IN   (?)

执行的时候总是报错误:ora-01722   无效数字,请高手指点一下,非常感激您的关注

"1,2,3... "这个字符串是动态生成的,这个USER_ID不定个数,所以产生了上面的错误现象

------解决方案--------------------
这个,你就先把sql拼好了在执行吧,用参数不好实现,我不知道
------解决方案--------------------
你这根本不是参数绑定,你绑定是一个串,这是不行的。只能where userid=? and userid2=?......然后根据字段和Java类型来选择setXXX方法将值绑定到问号。
------解决方案--------------------
你把sql语句SELECT * FROM USER WHERE USER_ID IN (?)改为SELECT * FROM USER WHERE USER_ID IN (“?”),这样试一下,如果你直接用1,2,3系统会认为是数字的

------解决方案--------------------
没看明白。。。。
------解决方案--------------------
> 我现在把它变成这样,还是报错,请各位再指点一下

楼主你没明白,setXXX() 是用来“设定值”的,不是用来“拼接 SQL 语句”的。