gpt4 book ai didi

java - 准备好的语句返回部分记录,即 3,而同一查询的 sql 开发人员返回所有记录,即 5

转载 作者:行者123 更新时间:2023-12-02 10:15:44 26 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题

Java代码:

preparedStatement = conn.prepareStatement(strSql);
resultset = preparedStatement.executeQuery();

在调试时我试图找到什么是 SQL,它是:

SELECT JOBLOG.JOB_EVENT_CODE,JOBLOG.LOG_DATETIME,JOBLOG.MESSAGE_TEXT,B.ITEM_DESC1
FROM JOB_LOG JOBLOG,REF_DATA_ITEM_MASTER B WHERE JOBLOG.BATCH_ID = ?
AND JOBLOG.JOB_EVENT_CODE = B.ITEM_ID AND B.CATEGORY_ID = 105
ORDER BY JOBLOG.JOB_LOG_ID ASC

参数被替换为20021854

上面的查询通过 java 代码运行时结果集大小为 3

resultset = preparedStatement.executeQuery();

但是如果我在 sqldeveloper 中运行相同的查询,我将有 5 条记录作为输出

SELECT JOBLOG.JOB_EVENT_CODE,JOBLOG.LOG_DATETIME,JOBLOG.MESSAGE_TEXT,B.ITEM_DESC1 
FROM JOB_LOG JOBLOG,REF_DATA_ITEM_MASTER B
WHERE JOBLOG.BATCH_ID = 20021854 AND JOBLOG.JOB_EVENT_CODE = B.ITEM_ID AND B.CATEGORY_ID = 105
ORDER BY JOBLOG.JOB_LOG_ID ASC

要添加更多信息,我的 ORM 是 Ibatis。造成这种不一致的原因可能是什么

最佳答案

我能想到的原因:

  1. 您在 sql Developer 中插入了新行,但尚未提交事务,因此只有 sql Developer 可以看到新行,但 java 程序看不到(这是常见情况:) )
  2. 您连接到 2 个不同的数据库,请验证
  3. 您在PreparedStatment 中使用setMaxRows 吗?

关于java - 准备好的语句返回部分记录,即 3,而同一查询的 sql 开发人员返回所有记录,即 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54701019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com