Reputation: 57
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
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