【发布时间】: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上执行,这将在至少告诉你查询是否正常。