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() 和主机系统太快有关。这就是系统有时使用相同毫秒的原因。我改变了参考文献。