Shubham Kumar
Shubham Kumar

Reputation: 57

getting org.springframework.jdbc.UncategorizedSQLException: SQL state [HY109]; error code [-99999]; Cursor position not valid

I am getting the below exception whenever i run a method which run the following query.

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ SELECT * FROM TABLE_NAME WHERE TYPESERV = 'INPUT VAUE' ]; SQL state [HY109]; error code [-99999]; Cursor position not valid.

    public String getType(String name, String service) {

    final var parameters = new HashMap<String, Object>();
    parameters.put("service", service);

    final var query = """
                SELECT * FROM  TABLE_NAME WHERE  TYPESERV = :service
            """;
    return this.getNamedParameterJdbcTemplate(name)
            .query( query, new MapSqlParameterSource(parameters), rs -> {
                    return rs.getString("FIELD_NAME");
            }
    );
    

complete log:

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ SELECT * FROM  TABLE_NAME WHERE  TYPESERV = ? ]; SQL state [HY109]; error code [-99999]; Cursor position not valid.
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1549)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:677)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:723)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:748)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:178)
.....
Caused by: java.sql.SQLException: Cursor position not valid.
at com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:982)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:435)
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:412)
at com.ibm.as400.access.AS400JDBCResultSet.getValue(AS400JDBCResultSet.java:3770)
at com.ibm.as400.access.AS400JDBCResultSet.getString(AS400JDBCResultSet.java:3411)
at com.ibm.as400.access.AS400JDBCResultSet.getString(AS400JDBCResultSet.java:3438)
at com.zaxxer.hikari.pool.HikariProxyResultSet.getString(HikariProxyResultSet.java)

Updates:

driverClassName: com.ibm.as400.access.AS400JDBCDriver

i-series dbversion= 7.4.0

library=net.sf.jt400, version of jt400 driver = 20.0.7

Upvotes: -2

Views: 83

Answers (1)

jweberhard
jweberhard

Reputation: 586

Looks like the ResultSet was empty, i.e. your query returned no results. I get a similiar error when attempting to access a row after rs.next() returned false.

java.sql.SQLException: Cursor position not valid.
    at com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:978)
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:431)
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:408)
    at com.ibm.as400.access.AS400JDBCResultSet.getValue(AS400JDBCResultSet.java:3984)
    at com.ibm.as400.access.AS400JDBCResultSet.getString(AS400JDBCResultSet.java:3614)
    at com.ibm.as400.access.AS400JDBCResultSet.getString(AS400JDBCResultSet.java:3643)

Upvotes: 0

Related Questions