加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用DBUtils连接Sqlserver插入失败的问题

发布时间:2020-12-12 13:19:00 所属栏目:MsSql教程 来源:网络整理
导读:使用DBUtils连接Sqlserver插入失败的问题 帅宏军 一、问题描述: 使用DBUtils对数据库Sqlserver进行插入操作时,失败,提示参数“?”不可识别。代码如下 [java] view plain copy print ? public ? void ?insert(Customer?customer)?{?? String?sql?=? "inse

使用DBUtils连接Sqlserver插入失败的问题

帅宏军

一、问题描述:

使用DBUtils对数据库Sqlserver进行插入操作时,失败,提示参数“?”不可识别。代码如下

[java] view plain copy print ?
  1. public?void?insert(Customer?customer)?{??
  2. String?sql?=?"insert?into?customer?values(?,?,?)";??
  3. ??
  4. Object[]?args?=?{?CustomerUtils.getID(),?customer.getName(),??
  5. ????????customer.getGender(),?customer.getBirthday(),??
  6. ????????customer.getCellphone(),?customer.getEmail(),??
  7. ????????customer.getPreference(),?customer.getType(),??
  8. ????????customer.getDescription()?};??
  9. ????????????????
  10. //?在执行这段代码时就出错了 ??
  11. QueryRunner?queryRunner?=?new?QueryRunner(JDBCUtils.getDataSource());??
  12. ??
  13. try?{??
  14. ????queryRunner.update(sql,?args);??
  15. }?catch?(SQLException?e)?{??
  16. ????//?TODO?Auto-generated?catch?block ??
  17. ????e.printStackTrace();??
  18. }??

问题原因发现是sqlserver的jdbc驱动在判断占位符类型的时候有问题;具体的就是获得ParameterMetaData的时候出了问题,这个时候可以用一个knowParaType的参数避免这个问题,就是在创建 QueryRunner的时候,提供一个true参数。


二、解决方法

附上代码

[java] view plain copy print ?
  1. ????public?void?insert(Customer?customer)?{??
  2. ????String?sql?=?"insert?into?customer?values(?,?)";??
  3. ??
  4. ????Object[]?args?=?{?CustomerUtils.getID(),??
  5. ????????????customer.getGender(),??
  6. ????????????customer.getCellphone(),??
  7. ????????????customer.getPreference(),??
  8. ????????????customer.getDescription()?};??
  9. ??
  10. ????//关键是这句加一个参数true ??
  11. ????QueryRunner?queryRunner?=?new?QueryRunner(JDBCUtils.getDataSource(),??
  12. ????????????true);??
  13. ??
  14. ????try?{??
  15. ????????queryRunner.update(sql,?args);??
  16. ????}?catch?(SQLException?e)?{??
  17. ????????//?TODO?Auto-generated?catch?block ??
  18. ????????e.printStackTrace();??
  19. ????}??
  20. }??


转载请注明出处:http://www.voidcn.com/article/p-qbdpqvie-bgg.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读