【发布时间】:2015-12-22 09:04:17
【问题描述】:
我正在使用 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++; }
【问题讨论】:
-
select count(*)您的查询将始终仅返回 1 行,即仅返回计数。多行的问题在哪里? -
这是我在 SQL 开发人员中用来检查行数的查询。在 JDBC 中,我在 while(resultSet.next()) 中使用了一个变量来检查返回了多少行
-
请发布您在 SQL 开发人员(完整语句)和通过 JDBC(完整
prepareStatement()和executeQuery()调用)中运行的 exact 查询。因为就目前而言,答案是:您没有运行相同的查询。 -
@LalitKumarB 我已经编辑了完整的细节
-
@Jaydeep 当您在 JDBC 代码中也使用
count(*)时会发生什么?