マイナーな問題ですが、次の動作が発生する理由を誰かが知っているかどうか疑問に思っていました. UNION ディレクティブを含む大きな select ステートメントがあります。入力のリストに対してこのステートメントを呼び出す必要があります。したがって:
Connection connection = createConnection();
PreparedStatement statement = connection.prepareStatement(dbLoadOneQuery, TYPE_FORWARD_ONLY, CONCUR_READ_ONLY);
for (Integer param : params) {
statement.setInt(1, param);
statement.setInt(2, param);
statement.addBatch();
}
statement.execute();
do {
ResultSet resultSet = statement.getResultSet();
// snip
} while (statement.getMoreResults());
今、私はこれをいくつかの方法で行うことができたことを知っています。より良い方法があるかどうかは問題ではありません。むしろ、結果がまとまって来る理由を知りたいですか? ステートメントから 3 ~ 4 個の個別の ResultSet を読み取る必要があります。それらは共用体に対応しておらず、同じサイズではなく、データは特定の形式でグループ化されていません。
ドライバー固有のものだと思いますが、この動作を許可する JDBC 仕様が見つかりませんでした。ドライバはcom.sybase.jdbc4.jdbc.SybDriver
ライブラリ jconn4 からのものです。
jConnect (TM) for JDBC(TM)/7.07 GA(Build 26666)/P/EBF19485/JDK 1.6.0/jdbcmain/Wed Aug 31 03:14:04 PDT 2011