[Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.isBeforeFirst è l'eccezione che è stata sollevata dal seguente frammento di codice Java:
try{ stm= MyConn.createStatement(); ResSet = stm.executeQuery(MySql.toString()); } catch (SQLException SQLE){ throw new Exception("Impossibile leggere le colonne - " + SQLE.toString()); }
Il messaggio è ingannevole perchè la documentazione rilasciata unitamente ai driver JDBC della Microsoft indica che il metodo ResultSet.isBeforeFirst viene supportato. Il problema nasce dal tipo di oggetto ResultSet che viene restituito dal metodo Connection.createStatement(). Se si usa la firma del metodo senza argomenti, viene restituito un oggetto ResultSet di tipo TYPE_FORWARD_ONLY con un livello di concorrenza CONCUR_READ_ONLY.
Per risolvere il problema è sufficente modificare il tipo di oggetto ResultSet, invocando l'overload del metodo connection.createStatement() con due parametri interi nella firma:
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLExceptionIl frammento di codice funzionante, allora, è:
try{
stm= MyConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResSet = stm.executeQuery(MySql.toString());
} catch (SQLException SQLE){
throw new Exception("Impossibile leggere le colonne - " + SQLE.toString());
}
Ho constatato che con altri driver JDBC (es. jtds) l'eccezione non viene sollevata.
[da 1 a 0 di 0 commenti] | Indietro