@红薯 求救啊!!!!!最近在开发一个东西,数据库操作层用的是apache dbutils,结果今天遇到一个恶心的问题,就是我的SQL是这样的:
select top 9 * from ENLesson where (name_cn like ? or name_en like ?) and id not in(select top 0 id from ENLesson where name_cn like ? or name_en like ?);
然后程序是queryRunner.query(sql,new BeanListHandler<Lesson>(Lesson.class),"%" + key + "%", "%" + key + "%", "%" + key + "%", "%" + key + "%");
尼玛,程序一直报错:
java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: ',' 附近有语法错误。 Query: select top 9 * from ENLesson where id not in(select top 9 id from ENLesson where name_cn like ? or name_en like ?) and (name_cn like ? or name_en like ?) Parameters: [%java%, %java%, %java%, %java%]我特么现在蛋都 碎了,以前没用过这玩意,这种错误是什么情况?救急啊!!!非常感谢了!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
怎么没单引号######哪里?你是指参数吗?这里是预处理,不用带'啊######like ?' 多了一个单引号啊。######这个我coyp过来写错了,不是这个的问题######逗号附近有语法错误,哪里来的逗号。。。######回复 @新人王 :通的过,这个,,不是拼装吧######@张浩春 将出来的语句放入查询器查询,看是否能执行通过;然后再检查写的语句,没用过dbunit,拼装sql略显不靠谱。######。。。我也在想哪来的逗号,坑爹的啊######你搞错了吧。query第三个参数你这里要传数组吧。######回复 @我是潮汐 : 解决个屁啊,它的BUG,我没办法了,我现在换数据库######回复 @张浩春 : 额,我用的最新版,没过时。恭喜你解决问题。######回复 @我是潮汐 : 过时了,再说过不过时已经不重要了,我找到是sql server jdbc driver的BUG了######回复 @张浩春 : 你用的哪个版本?传数组的并没有过时啊。######问题不在这里,传数组的已经被丢弃了。现在是不定参数######可能变长参数有问题,试试传数组吧。######找到问题了,尼玛,是sqljdbc4.jar的问题,在dbutils里面有这样一个方法stm.getParameterMetaData();执行这个方法的时候出错了,也就是说是sql server 驱动的问题