invalid cursor state

i had it when i tried to review items on a jtable from a MS-Access97 db,how to fix this?
[95 byte] By [mina_guindy] at [2007-9-27 19:33:36]
# 1
nobody faced it before !!!
mina_guindy at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 2

i also have this problem ->

Apache Tomcat/4.0.3 - HTTP Status 500 - Internal Server Error

--

type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: [Microsoft][ODBC Driver Manager] Invalid cursor state

at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:463)

at org.apache.jsp.editMenteeContact$jsp._jspService(editMenteeContact$jsp.java:184)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)

at java.lang.Thread.run(Thread.java:479)

root cause

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6026)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6183)

at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3261)

at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5393)

at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:321)

at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:378)

at org.apache.jsp.editMenteeContact$jsp._jspService(editMenteeContact$jsp.java:72)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)

at java.lang.Thread.run(Thread.java:479)

--

piertiong at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 3
The question doesn't make alot of sense to me, but if I understand it correctly, you should try calling ResultSet.next() prior to using it...
rdoerga at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 4

I'm receiving the same error. I'm able to read all of the rows in my cursor, but I don't receive a false from rs.next() and remain in the loop.

My java code is listed below followed by the console output. What am I doing wrong?

HttpSession session = req.getSession(true);

Connection con =(Connection) session.getAttribute("connection");

String username = (String) req.getAttribute("username");

Statement stmt = null;

ResultSet rs = null;

try

{

stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_READ_ONLY);

rs = stmt.executeQuery("select item ,count(*) " +

"from userItems a, items b " +

"where a.itemID = b.itemID and " +

"a.username='" + username + "' and " +

"a.deletedSW=no " +

"group by item");

while (rs.next())

{

System.out.print ("row - " + rs.getRow() + "" );

String item = rs.getString(1);

System.out.println (item + "\t" + rs.getInt(2));

}

}

catch (SQLException sqle)

{

System.out.println ("SQLException: " +

sqle.toString());

}

--

Here is the the console output:

row - 1car1

row - 2chair 1

row - 3lamp 2

row - 4sofa 1

row - 5SQLException: java.sql.SQLException: [Microsoft][ODBC Driver Manager]

Invalid cursor state

Help would be greatly appreciated.

rchoueka at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 5
did you ever get this resolved? I'm having the same problem.
wguidry at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 6

I'm having the same problem...

it occurs only when i use a 'group by' in my sql statement...

I use Microsoft Access, and when i execute my query in access it gives me back 2 rows... when i do it through java and i count the number of rows in my ResultSet i count 4 rows...

when i leave the 'group by' out of my sql statement i get also 4 rows...

the funny thing is, when I try to read the first 2 rows (which i get to see when i execute the query in Access) no error occurs... When I try to read the 3th or the 4th line => invalid cursor state

can somebody please help me with this?

frederiktaleman at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 7

You might want to post a question in the JDBC forum about this, instead of posting a response to a two-year-old question in the wrong forum. And when you do, it would help if you posted some details along with the question -- like for example how you "count" the rows in your result set without reading them, and why.

DrClap at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...
# 8

i count them this way:

resultSet.last();// move to last row

numberOfRows = resultSet.getRow(); // get row number

thought that is quite obvious...

this is my sql string and the execution of it:

PreparedStatement stmt = cnn.prepareStatement("SELECT klant.klantid FROM klant INNER JOIN vestiging on Klant.klantid = Vestiging.klantid GROUP BY klant.klantid",

ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

stmt.setString(1,klantNaam);

ResultSet result = stmt.executeQuery();

frederiktaleman at 2007-7-6 22:36:17 > top of Java-index,Archived Forums,Java Programming...