DatabaseMetaData インスタンスを使用してデータベースを検査しています。DB 内のテーブルのすべての情報を取得し、すべての結果セットを問題なく反復処理します。
繰り返しの最後に、ResultSet の先頭に戻りたいので、beforeFirst() メソッドを呼び出し、次に next() メソッドを呼び出して、ResultSet の最初の要素を取得します。これが私のコードです:
connect(request.getParameter("source"));
DatabaseMetaData patrol = link.getMetaData();
answer = patrol.getTables(null, null, null, null);
while (answer.next()) {
String nomTable = answer.getString("TABLE_NAME");
System.out.println(nomTable)
}
answer.beforeFirst();
answer.next();
String table = answer.getString("TABLE_NAME");
answer.close();
すべての結果を取得しましたが、次の例外があります。
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
at sun.jdbc.odbc.JdbcOdbcResultSet.beforeFirst(Unknown Source)
at InspectDB.doPost(InspectDB.java:59)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:747)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:155
)
at com.sun.web.core.InvokerServlet.service(InvokerServlet.java:168)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:155
)
at com.sun.web.core.Context.handleRequest(Context.java:414)
at com.sun.web.server.ConnectionHandler.run(ConnectionHandler.java:139)
「ここまではすべて正常に見えます。私の接続 (MSAcsess への JDBC-OBDC) によると、私の ResultSet のフェッチ モードは ONLY_FORWARD であるため、次を使用して変更しようとしました。
answer.setFetchDirection(ResultSet.FETCH_REVERSE);
answer.beforeFirst();
answer.next();
予約モードを許可するために...しかし、それは私を許可しません。新しい例外:
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcResultSet.setFetchDirection(Unknown Source)
at InspectDB.doPost(InspectDB.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:747)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:155)
at com.sun.web.core.InvokerServlet.service(InvokerServlet.java:168)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.sun.web.core.ServletWrapper.handleRequest(ServletWrapper.java:155)
at com.sun.web.core.Context.handleRequest(Context.java:414)
at com.sun.web.server.ConnectionHandler.run(ConnectionHandler.java:139)
フェッチ モードを DatabaseMetaData からの結果セットに設定することは可能ですか? どうすればできますか??
ありがとう。