Oracle
 sql >> Database >  >> RDS >> Oracle

java.sql.SQLException:eccezione Io:ottenuto meno uno da una chiamata di lettura durante la connessione JDBC con Oracle

Innanzitutto, l'URL di connessione è errato. Post 8080 è normalmente utilizzato da un server web come Apache Tomcat. Oracle stesso utilizza una porta predefinita di 1521. Vedere anche questa documentazione Oracle JDBC .

Inoltre hai dimenticato di chiamare ResultSet#next() . Questo imposterà il cursore sulla riga successiva nel set di risultati. Il set di risultati viene restituito con il cursore prima la prima riga. Qualsiasi getXXX() chiama il ResultSet fallirà se non sposti il ​​cursore.

Se prevedi più righe in un set di risultati, devi utilizzare while ciclo:

resultSet = statement.executeQuery();
while (resultSet.next()) {
    String columnname = resultSet.getString("columnname");
    // ...
}

Oppure, se ti aspetti solo una riga, puoi anche procedere con un if dichiarazione:

resultSet = statement.executeQuery();
if (resultSet.next()) {
    String columnname = resultSet.getString("columnname");
    // ...
}

Per ulteriori suggerimenti ed esempi sull'utilizzo di base JDBC nel modo giusto (anche in JSP/Servlet) potresti trovare questo articolo utile. Il modo in cui hai chiuso la dichiarazione e la connessione, ad esempio, è soggetto a perdite di risorse. Anche il caricamento del driver JDBC su richiesta GET è inutilmente costoso. Fallo solo una volta durante l'avvio dell'applicazione o l'inizializzazione del servlet.