3

異なる名前を付けた結果セットに問題があるようですが、どちらも同じデータを持っているようですが、その理由がわかりません。

String query = "SELECT * FROM blog_comments;";
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int colNum = rsmd.getColumnCount();
boolean more = rs.next();

String query2 = "SELECT * FROM blog_entries;";
ResultSet rs2 = stmt.executeQuery(query2);
ResultSetMetaData rsmd2 = rs2.getMetaData();
int colNum2 = rsmd2.getColumnCount();
boolean more2 = rs2.next();

私はデバッグを調べましたが、どちらも同じ列を持っていますが、提案があるべきではないと思います。

4

1 に答える 1

6

新しい ResultSet をインスタンス化するには、新しいステートメントが必要です。

Statement st1 = Conn.CreateStatement();
Statement st2 = Conn.CreateStatement();

ResultSet rs1 = st1.executeQuery();
ResultSet rs2 = st2.executeQuery();

ステートメント APIから。

デフォルトでは、Statement オブジェクトごとに 1 つの ResultSet オブジェクトのみを同時に開くことができます。したがって、ある ResultSet オブジェクトの読み取りが別の ResultSet オブジェクトの読み取りとインターリーブされている場合、それぞれが異なる Statement オブジェクトによって生成されている必要があります。Statement インターフェースのすべての実行メソッドは、開いているステートメントの現在の ResultSet オブジェクトが存在する場合、そのオブジェクトを暗黙的に閉じます。

于 2012-11-16T18:07:58.287 に答える