gpt4 book ai didi

java - 没有从数据库返回行 - 但有记录要返回

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:55 24 4
gpt4 key购买 nike

我正在使用 jdbc sybase 驱动程序 (jconn3) 执行 select 语句。我检查了在 isql 上手动执行的语句,所有行都正确返回。在 jdbc 上执行的语句:

select * from mytable where date between ? and ?

我将日期格式添加为 yyyy-MM-dd HH:mm:ss 并将时间值设置为开始日期的 00:00:00 和结束日期的 23:59:59。

它不起作用。行数必须是 1000,但有时是 770,有时是 990,有时是 564 等。没有每次返回的任何特定行数。

之后我添加了一个额外的执行,它只返回行数。首先,我执行 select count(*) from ... 语句,然后执行 select * from ...,现在 `select * from ... 查询返回每次都有正确的记录数。这与缓存无关。奇怪的是,我为这两次执行使用相同的准备语句和结果集对象。

对这个问题有什么想法吗?

@Rulmeq,这是代码(添加于 2012-03-29)

ResultSet rs = null;
PreparedStatement ps = null;

ps = myConn.getConnection().prepareStatement("select count(*) from myTable where date between ? and ?");
ps.setDate(1, new java.sql.Date(beginDate.getTime())); // format : yyyy-MM-dd
ps.setDate(2, new java.sql.Date(endDate.getTime())); // format : yyyy-MM-dd
rs = ps.executeQuery();
rs.next();
// some logs here

ps = myConn.getConnection().prepareStatement("select * from myTable where date between ? and ?");
ps.setTimestamp(1, new java.sql.Timestamp(beginDate.getTime())); // format : yyyy-MM-dd hh:mm:ss
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime())); // format : yyyy-MM-dd hh:mm:ss
rs = ps.executeQuery();
while(rs.next()){
........
}

最佳答案

我认为问题在于您用于将日期时间值分配给查询参数的代码。现在您指定带有“select * from ...”的代码工作正常,所以我认为它们之间的唯一区别是您可以使用

ps = myConn.getConnection().prepareStatement("select Count(*) from myTable where date between ? and ?");
ps.setTimestamp(1, new java.sql.Timestamp(beginDate.getTime()));
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
rs = ps.executeQuery();

对于“从...中选择计数(*)”

关于java - 没有从数据库返回行 - 但有记录要返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836160/

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