jdbc sybaseドライバ(jconn3
)を使用してselect文を実行しています。 isqlで手動で実行された文をチェックし、すべての行が正しく返されました。 JDBCの上で実行されている声明:dbから返された行はありませんが、返されるレコードがあります
select * from mytable where date between ? and ?
は私がyyyy-MM-dd HH:mm:ss
としてDATEFORMATを追加し、夜12時00分00秒として時間値を設定するための終了日の日付と午後11時59分59秒を開始します。
動作しません。行数は1000でなければならないが、時には770、場合によっては990、時には564などである。毎回返される特定の行数はない。
その後、行カウントだけを返す余分な実行を追加しました。最初にselect count(*) from ...
文を実行してからselect * from ....
を実行して、今度は `select * from ... queryは正しい数のレコードを毎回返します。これはキャッシュと関連付けることはできません。そして、奇妙なことですが、私はそれらの2つの実行のために同じpreparedstatementとresultsetオブジェクトを使用しています。
その問題に関するご意見はありますか?
@Rulmeqは、ここでのコード(2012年3月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のインスタンシエーション(定義)をコードに含めることができますか?彼らはここで鍵と思われる。 –