我可以从DatabaseMetaData查询更改Resultset中的获取模式吗?
我正在使用DatabaseMetaData实例检查数据库。我获得了DB中表的所有信息,并且我迭代了所有Resultset而没有任何问题。
在迭代结束时,我想返回到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的Resultset?我该怎么做??
谢谢。
没有找到相关结果
已邀请:
1 个回复
嗓瑰
处理多次迭代所需的ResultSet的标准方法是迭代一次并将其复制到List中。然后,您可以根据需要安全地滚动列表。