Tôi đang thực hiện câu lệnh chọn bằng cách sử dụng trình điều khiển cơ sở jdbc (jconn3
). Tôi đã kiểm tra câu lệnh bằng thủ công trên isql và tất cả các hàng được trả về một cách chính xác. Tuyên bố được thực hiện trên jdbc:Không có hàng nào được trả lại từ db - nhưng có các hồ sơ được trả lại
select * from mytable where date between ? and ?
tôi thêm DateFormat như yyyy-MM-dd HH:mm:ss
và thiết lập các giá trị thời gian như 0:00:00 cho ngày bắt đầu và ngày kết thúc 23:59:59 cho.
Nó không hoạt động. Số lượng hàng phải là 1000 nhưng đôi khi là 770, đôi khi 990, đôi khi 564 v.v. Không có bất kỳ số lượng hàng cụ thể nào được trả về.
Sau đó, tôi đã thêm thực thi bổ sung chỉ trả về số lượng hàng. Đầu tiên tôi đang thực thi câu lệnh select count(*) from ...
sau đó thực hiện select * from ....
và bây giờ truy vấn `chọn * từ ... trả về đúng số lượng bản ghi mọi lúc. Điều này không thể liên quan đến bộ nhớ đệm. Và điều kỳ lạ là, tôi đang sử dụng các đối tượng chuẩn bị và kết quả tương tự cho hai thực thi đó.
Bất kỳ ý tưởng nào về vấn đề đó?
@Rulmeq, đây là mã (thêm vào 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()){
........
}
Hiển thị mã cho chúng tôi. – Goibniu
@Rulmeq, tôi đã thêm mã được đề cập. – Aykut
Bạn có thể bao gồm sự khởi tạo của bạn (định nghĩa) của beginDate và endDate trong mã của bạn không. Họ dường như là chìa khóa ở đây. –