开发者社区> 问答> 正文

使用DbUtils执行sql不能带有引号的参数如何解决?:报错

 

代码: // 带单引号的字符串,插入到数据库中
  String sql = "INSERT INTO Test(testException) VALUES ('0')";

  QueryRunner qr = DBHelper.getQueryRunner();
  try {
   qr.update(sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }

异常:

java.sql.SQLException: Duplicate entry '0' for key 'PRIMARY' Query: INSERT INTO Test(testException) VALUES ('0') Parameters: []
 at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:542)
 at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:599)
 at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:655)
 at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:620)
 at com.v512.blog.Test.doGet(Test.java:23)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619)

 

展开
收起
kun坤 2020-06-14 10:37:07 608 0
1 条回答
写回答
取消 提交回答
  • 报错,到底报什么错呢??把详细的错误信息贴出来。

    ######

    引用来自#2楼“贱客”的帖子

    报错,到底报什么错呢??把详细的错误信息贴出来。

     贴上来了,麻烦大虾在看下。谢谢

    ######

    你可以把引号替换成转义符号嘛  嘎嘎    比如用commons lang组件帮你做

    ######

    使用转义,这里提示错误是重复插入

    ######

    主键重复了~~

    ######

    引用来自#6楼“Jimmy”的帖子

    主键重复了~~

    完全正确。

    ######

    这跟引号没关系。

    ######

    你当时肯定有过一条同样的记录了吧,主键是不能重负的

    2020-06-14 10:37:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载