没有从db返回的行 - 但是有返回的记录

mas*_*say 7 java sql sybase jdbc

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

select * from mytable where date between ? and ?
Run Code Online (Sandbox Code Playgroud)

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

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

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

关于这个问题的任何想法?

@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()){
    ........
}
Run Code Online (Sandbox Code Playgroud)

mas*_*say -1

感谢大家,但问题已经解决,并且与 jdbc 无关。这与使用 System.currentTimeMillis() 和主机系统太快有关。这就是系统有时使用相同毫秒的原因。我改变了参考文献。