怎样使得ResultSet的返回值可以变动访问?(为什么没人看,eguy请帮忙) (50分)

  • 主题发起人 主题发起人 delphiasp
  • 开始时间 开始时间
D

delphiasp

Unregistered / Unconfirmed
GUEST, unregistred user!
以下程序段(共有3个字段),以JRUN作为引擎:

ResultSet rs=stmt.executeQuery("select * from test");
a1=rs.getString(3);
a2=rs.getString(2);
a3=rs.getString(1);
提示的错误是:
javax.servlet.ServletException: Exception thrown on line '23' from page 'D://Allaire//JRun//servers//default//mcs99//index.jsp'.
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3266)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5377)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:320)
at jrun__index2ejspa._jspService(jrun__index2ejspa.java:65)
at allaire.jrun.jsp.HttpJSPServlet.service(HttpJSPServlet.java:40)
at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013)
at allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java:925)
at allaire.jrun.servlet.JRunNamedDispatcher.forward(JRunNamedDispatcher.java:34)
at allaire.jrun.jsp.JSPServlet.service(JSPServlet.java:175)
at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013)
at allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java:925)
at allaire.jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.java:88)
at allaire.jrun.file.FileServlet.service(FileServlet.java:146)
at allaire.jrun.servlet.JRunServletPool.service(JRunServletPool.java:92)
at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013)
at allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java:925)
at allaire.jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.java:88)
at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1131)
at allaire.jrun.servlet.JvmContext.dispatch(JvmContext.java:330)
at allaire.jrun.http.WebEndpoint.run(WebEndpoint.java:107)
at allaire.jrun.ThreadPool.run(ThreadPool.java:272)
at allaire.jrun.WorkerThread.run(WorkerThread.java:75)
我将其改为:
ResultSet rs=stmt.executeQuery("select * from test");
a1=rs.getString(1);
a2=rs.getString(2);
a3=rs.getString(3);
这样子就没有错误了。

因此,对于这个问题,请问如果解决?
是否还需要设置什么属性?
 
为了最大程度的可移植性,JDBC规定resultset必须按由左至右的顺序读取某行的各列,
且每列只能读一次。这反映了在某些基本数据库协议中存在实现限制。
你就老老实实地按顺序读吧。

 
虽然没有收获,还是要谢谢eguy
 
后退
顶部