Sto tentando di creare un programma Java che accede a un'origine dati ODBC. Utilizzando il seguente codice ...Creazione di una connessione con risultati ODBC Java in java.sql.SQLException: eccezione di tipo di cursore non valida
Connection conn;
try {
Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
DriverManager.registerDriver(d);
String URL = "jdbc:odbc:AR System ODBC Data Source";
conn = DriverManager.getConnection(URL);
} catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e) {
Logger.error(this, e);
}
Statement s = null;
ResultSet rs = null;
try {
s = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
rs = s.executeQuery("select count(*) as rows from table");
if (rs.next()) {
System.out.print("Count of all rows is " + rs.getInt("rows"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.safelyClose(s, rs);
}
... ottengo la seguente eccezione:
java.sql.SQLException: The result set type is not supported.
at sun.jdbc.odbc.JdbcOdbcStatement.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(Unknown Source)
at com.csc.remedyarchiver.data.input.ODBCConnection.main(ODBCConnection.java:38)
In origine, quando stavo cercando di risolvere questo per conto mio, stavo usando il createStatement argomento vuoto() chiama ma questo ha portato all'eccezione sopra (ecco perché ho usato il TYPE_FORWARD_ONLY tipo di set di risultati ma sempre lo stesso risultato:
C'è qualcos'altro che posso provare con questo o ha bisogno di un approccio diverso?
controllare cambiare se per mentre.just dire while (rs.next()) { System.out.print ("Conteggio di tutte le righe è" + rs.getInt ("righe")); } –
@PiumiWandana: non ha funzionato con l'eccezione del tipo di cursore non valido. – Ocracoke
Prova ad aggiungere il parametro 'ResultSet.CLOSE_CURSORS_OVER_COMMIT' in' createStatement() 'per vedere se aiuta –