当前位置: 技术问答>java相关
非常怪的问题:两次myResultSet.getString("name")就出错!!为啥啊??
来源: 互联网 发布时间:2015-01-23
本文导语: 此时一次是每问题的,比如 .......... .......... 但是在其他都不变情况下改为两句就不行了: .......... .......... 出错LOG行如下:大家碰过吗?????????????????????? #### java.sql...
此时一次是每问题的,比如
..........
..........
但是在其他都不变情况下改为两句就不行了:
..........
..........
出错LOG行如下:大家碰过吗??????????????????????
####
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6212)
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 sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:376)
at jsp_servlet._jsp._tt2._jspService(_tt2.java:115)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:246)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1622)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
..........
..........
但是在其他都不变情况下改为两句就不行了:
..........
..........
出错LOG行如下:大家碰过吗??????????????????????
####
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6212)
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 sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:376)
at jsp_servlet._jsp._tt2._jspService(_tt2.java:115)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:246)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1622)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
|
因为在读记录是,指针会自动向后移,你的指针已指向“name”的下一个字段,再读取“name“就会出错。如想读记录中的多个字段,只能是顺序读取,不要先读后面的再读前面的(顺序以你的数据库中创建的字段顺序为准)。
|
因為java不想asp中的一樣,它運行到那一條紀錄,如果在本業它將從這裡開始,不會再上依指針的呀
|
我的怎么可以多次读出同一条记录的不同字段呀,(字段顺序可以随便)
但不能向前读记录,或定位到某一条记录
我想设con.createStatement(TYPE_SCROLL_INSENSITIVE,CONCUR_READ_ONLY)总出错,
设不了
怎么回事呀?
但不能向前读记录,或定位到某一条记录
我想设con.createStatement(TYPE_SCROLL_INSENSITIVE,CONCUR_READ_ONLY)总出错,
设不了
怎么回事呀?
|
其实这个问题在jdbc的文档里说过,它建议读取字段时按顺序读取;这里为什么用‘建议’,就是因为一些数据库并不支持不按顺序读取,而有的又可以(特别是常用的大型数据库,如db2);
所以,你这里抱错是因为你的数据库不支持的缘故(当然有的商家可能通过开发自己的jdbc驱动来弥补这点)
to HowHowHow:
你那是jdbc的版本低于了2.0
所以,你这里抱错是因为你的数据库不支持的缘故(当然有的商家可能通过开发自己的jdbc驱动来弥补这点)
to HowHowHow:
你那是jdbc的版本低于了2.0
|
我也碰到过这类的情况,我的解决办法是把myResultSet.getString("name")先赋给一个变量thisname,然后就光使用thisname了