我正在使用 JDBC 使用prepareStatement 和executeQuery 连接到oracle 数据库。但是,当我使用 SQL 开发人员对数据库进行相同的查询时,我发现通过 JDBC 返回的行数比实际值要少得多。
这是否可能是由于连接问题或查询或语句造成的。谁能帮帮我。
这是我在 SQL Developer 中运行的查询-
select count(*)
from xxx
where (TIME_STAMP between
TO_TIMESTAMP('2015-12-22 09:45:37.0','YYYY-MM-DD HH24:MI:SS.ff')
and TO_TIMESTAMP('2015-12-22 09:55:37.0','YYYY-MM-DD HH24:MI:SS.ff'))
AND (customerid not like '[null]')
AND (applicationid not like '[null]')
and (status not like '-');
编辑:我在 while(resultSet.next()) 中使用了一个变量计数器来计算返回的行数,从这里我知道返回的行数是不同的。下面是 JDBC 代码-
String query = "select * from xxx where
(TIME_STAMP between TO_TIMESTAMP('2015-12-22 09:45:37.0','YYYY-MM-DD HH24:MI:SS.ff') and
TO_TIMESTAMP('2015-12-22 09:55:37.0','YYYY-MM-DD HH24:MI:SS.ff'))
AND (customerid not like '[null]')
AND (applicationid not like '[null]')
and (status not like '-')";
stmt = con.prepareStatement(query);
rs = stmt.executeQuery(query);
while (rs.next()) {
counter++; }
最佳答案
首先,请确保您连接到同一个数据库。 (如果您有其他可能用于测试等)
然后,查看您的查询,最可疑的点似乎是日期转换。您可以分析两个不同的结果集并检查您输入的日期段是否与结果匹配。如果其中之一包含日期值方面的意外结果,则问题可能与 Java 虚拟机或 Oracle 服务器的默认时区有关。
关于java - 在 JDBC 中使用时,查询返回的行数少于 SQL 开发人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411999/