私はDatabaseMetaDataインスタンスを使用してデータベースを検査しています。私はDB内のテーブルのすべての情報を取得し、私は問題なしですべてのResultsetを反復処理します。ResultSetのFetch ModeをDatabaseMetaDataクエリから変更できますか?
最後にResultSetの先頭に戻りたいので、next()メソッドのあとに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からの結果セットに設定することはできますか?私はどうすればいいのですか?
ありがとうございました。
ありがとうございました。まあ、私はすでにStatementインスタンスを介してフェッチの方向を設定できることを知っていました。しかし、この場合、Statement objetはありません。 ResultSetはDatabaseMetaDataによって直接返され、目的はたとえばgetTablesメソッドを呼び出す前にFetch Directionを設定できるかどうかを知ることです。 – jomaora
上記のとおり、取得した後に前方のみの結果セットのフェッチ方向を設定することはできません。 DatabaseMetaDataクエリのフェッチ方向のヒントを事前に設定する方法があるかどうかについては、私は気づいていませんが、存在しないというわけではありません。 – gcooney
もう1つのこと - ステートメントを介してフェッチ方向を設定することはヒントであり、保証ではありません。すべてのドライバがすべてのフェッチ方向をサポートするわけではありません。 – gcooney