java - 在 JDBC 中使用时,查询返回的行数少于 SQL 开发人员

标签 java oracle jdbc

我正在使用 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/

相关文章:

java - Java中的int可以为null吗?

java - JPA Hibernate fetchSize 查询提示问题

sql - Oracle SQL VARCHAR2 数据类型存储

sql - 索引列上的不同值

java - 通过 JDBC 使用 Derby DB 检索列 Default

java - 如何在java中动态连接mysql数据库并显示所选数据库的表、属性?

java - 多线程ArrayList迭代

Java Builder 模式实现与 C# 的比较

Scala 的参数列表中带有 "..."的 Java 函数

mysql - 本地服务器上的数据库 url