java执行sql列名无效_sqlserver列名无效调试及解决方法

今天用ssm和做sqlserver查询时报错:列名’D’无效

mapper.java

ListgetChangeCancelWithShipmentType(@Param("changeTypeArr") String[] changeTypeArr);

mapper.xml

SELECT CHANGE_ID FROM BC_CHANGE_SHIPMENT WHERE TYPE IN

${type}

foreach>

select>

然后报错,错误信息为:

org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 列名 ‘C’ 无效。 ### The error may exist in file [F:\Java\workspace\tangb2c_20170901\tangb2c-app-service\target\classes\mybatis-mapping\change\mapper\ChangeQueryMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT CHANGE_ID FROM BC_CHANGE_SHIPMENT WHERE TYPE IN ( W , D , C ) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 列名 ‘C’ 无效。 ; bad SQL grammar []; nested exception is

从报错信息可以看出本来应该是?,?,?这样的参数,但是这里直接打印出来了,而且没有引号,所以sqlserver认为是个列名,调试的时候可以把sql语句放到navicate中,错误信息会更全面,在认真检查是xml中用了${type},正确应该是#{type}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值