Я выполняю инструкцию select с помощью драйвера jdbc sybase (jconn3
). Я проверил оператор, выполнив вручную на isql, и все строки вернулись правильно. В заявлении, которое выполняется на JDBC:Нет строки, возвращаемой из db - но есть записи, которые необходимо вернуть
select * from mytable where date between ? and ?
Я добавил DateFormat в yyyy-MM-dd HH:mm:ss
и установите значение времени в 00:00:00 на дату и 23:59:59 на дату окончания начать.
Не работает. Счетчик строк должен быть 1000, но иногда это 770, иногда 990, иногда 564 и т. Д. Нет никакого определенного количества строк, которое возвращалось каждый раз.
После этого я добавил дополнительное выполнение, которое возвращает только количество строк. Сначала я выполняю инструкцию select count(*) from ...
, а затем выполняет select * from ....
и теперь `select * from ... query возвращает правильное количество записей каждый раз. Это не может быть связано с кешированием. И что странно, я использую то же самое, что и готовые объекты и объекты результатов для этих двух исполнений.
Любая идея по этому вопросу?
@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()){
........
}
Покажите нам свой код. – Goibniu
@ Rulmeq, я добавил код, о котором идет речь. – Aykut
Можете ли вы включить в свой код свой экземпляр (определение) beginDate и endDate. Они, кажется, являются ключевыми здесь. –