开发者社区> 问答> 正文

apache dbutils查询时出错?报错

@红薯 求救啊!!!!!最近在开发一个东西,数据库操作层用的是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%]
我特么现在蛋都 碎了,以前没用过这玩意,这种错误是什么情况?救急啊!!!非常感谢了!

展开
收起
爱吃鱼的程序员 2020-06-22 18:51:11 511 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    怎么没单引号哪里?你是指参数吗?这里是预处理,不用带'啊like?'多了一个单引号啊。这个我coyp过来写错了,不是这个的问题逗号附近有语法错误,哪里来的逗号。。。回复<aclass='referer'target='_blank'>@新人王:通的过,这个,,不是拼装吧<atarget='_blank'>@张浩春将出来的语句放入查询器查询,看是否能执行通过;然后再检查写的语句,没用过dbunit,拼装sql略显不靠谱。。。。我也在想哪来的逗号,坑爹的啊你搞错了吧。query第三个参数你这里要传数组吧。回复<aclass='referer'target='_blank'>@我是潮汐:解决个屁啊,它的BUG,我没办法了,我现在换数据库回复<aclass='referer'target='_blank'>@张浩春:额,我用的最新版,没过时。恭喜你解决问题。回复<aclass='referer'target='_blank'>@我是潮汐:过时了,再说过不过时已经不重要了,我找到是sqlserverjdbcdriver的BUG了回复<aclass='referer'target='_blank'>@张浩春:你用的哪个版本?传数组的并没有过时啊。问题不在这里,传数组的已经被丢弃了。现在是不定参数可能变长参数有问题,试试传数组吧。找到问题了,尼玛,是sqljdbc4.jar的问题,在dbutils里面有这样一个方法stm.getParameterMetaData();执行这个方法的时候出错了,也就是说是sqlserver驱动的问题

    2020-06-22 18:51:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像