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

时间:2015-12-22 09:04:17

标签: java oracle jdbc

我正在使用JDBC通过prepareStatement和executeQuery连接到oracle数据库。但是当我在SQL开发人员的数据库中使用相同的查询时,我发现通过JDBC返回的行远远少于实际的行。

由于连接问题或查询或声明,这是否可行。任何人都可以帮助我。

这是我在SQL开发人员中运行的查询 -

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++; }

1 个答案:

答案 0 :(得分:0)

首先,请确保您连接到同一个数据库。 (如果您可能有其他人用于测试等)

然后,查看您的查询,最可疑点似乎是日期转换。您可以分析两个不同的结果集,并检查您输入的日期是否与结果匹配。如果其中一个在日期值方面包含意外结果,则该问题可能与Java虚拟机或Oracle Server的默认时区有关。