【问题标题】:Incorrect result size: expected 1, actual 0结果大小不正确:预期为 1,实际为 0
【发布时间】:2015-03-13 15:55:06
【问题描述】:

我正在开发测试环境。

这是我在java中使用的查询

String sql =     "INSERT INTO PO_PART_XML_IF (INTERFACE_ID, INTERFACE_TRANSACTION_ID,"
                + " O_SEQ_NO, PART_NO,  O_QTY, O_TYPE_CODE, R_R_NO"
                + " ,O_LINE_COMMENT, C_CODE, INPUT_USER_ID, INPUT_TIMESTAMP, "
                + "LAST_UPDATE_USER_ID, LAST_UPDATE_TIMESTAMP ) VALUES (   

                 G_REPAIR_PARTS_IF_SEQ.nextval,"+transactionnumber+",'"+orderSecNo+"','"+  
                 job.getPartNo()+"',"+ Long.parseLong(job.getOrderQty())+",'"+job.getDeliveryType().getTitle()+"','"+job.getServiceReceiptNo()+"','"+replaceSingleQuote(job.getOrderComment())+"','"+currencyCode+"','"+inputUserID+"',SYSDATE,'"+inputUserID+"',SYSDATE)";

当我进行一些测试时,我在日志文件中得到了这个错误:

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

我直接在 pl/sql 上检查,它工作正常。我的意思是插入数据。但是当您使用 java 程序进行测试时,它会显示此错误。

任何想法!

【问题讨论】:

  • 首先要解决的问题:通过包含这样的值来停止构建 SQL。使用参数化 SQL。这可能会或可能不会解决问题,但这绝对是您应该解决的第一件事,IMO。
  • 你为什么要解析一个long 值只是为了把它变成一个字符串。不是已经是字符串了吗?
  • 你正在尝试插入查询,错误提示一些数据访问问题,我会说你没有给我们确切的数量信息来解决你的问题
  • 要么你没有使用正确的API进行插入查询,要么这些“参数”有问题,所以打印带有参数的SQL并尝试直接在DB上执行,这将在至少告诉你查询是否正常。

标签: java sql xml


【解决方案1】:

如果查询没问题(你必须检查一下),应该工作的代码是

Statement statement = dbConnection.createStatement();
statement.executeUpdate(sql);

你可能正在使用

statement.executeQuery(sql);

插入查询是错误的。

【讨论】:

    【解决方案2】:

    您尚未显示实际执行查询的代码,但从消息来看,您似乎正在执行,就好像它返回数据一样,即 SELECT,但它是一个 UPDATE 语句。

    尝试使用适当的 API 执行它以进行更新。

    【讨论】:

      猜你喜欢
      • 2015-04-24
      • 2017-06-02
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      相关资源
      最近更新 更多