我正在使用DatabaseMetaData实例检查数据库。我得到了DB中所有表的信息,并且我遍历了所有的Resultset,没有任何问题。我可以通过DatabaseMetaData查询更改结果集中的提取模式吗?
在迭代结束时,我想返回到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)
“到这里的一切似乎很正常。根据我的连接(通过JDBC OBDC到MSAcsess),我的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对象。结果集由DatabaseMetaData直接返回,目标是知道是否可以设置提取方向,例如,在调用getTables方法之前。 – jomaora 2011-02-08 21:23:46