sql >> Database >  >> RDS >> Oracle

java.sql.SQLException:Io-uitzondering:kreeg min één van een leesaanroep tijdens JDBC-verbinding met Oracle

Ten eerste is de verbindings-URL verkeerd. Post 8080 wordt normaal gesproken gebruikt door een webserver als Apache Tomcat. Oracle gebruikt zelf een standaardpoort van 1521. Zie ook deze Oracle JDBC-documentatie .

Verder ben je vergeten te bellen ResultSet#next() . Hierdoor wordt de cursor naar de volgende rij in de resultatenset geplaatst. De resultatenset wordt geretourneerd met de cursor voor de eerste rij. Elke getXXX() roept de ResultSet . aan zal mislukken als u de cursor niet verplaatst.

Als u meerdere rijen in een resultatenset verwacht, moet u while . gebruiken lus:

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

Of als u slechts één rij verwacht, kunt u ook doorgaan met een if verklaring:

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

Voor meer hints en voorbeelden van het gebruik van basis JDBC op de juiste manier (ook in JSP/Servlet) vind je misschien dit artikel bruikbaar. De manier waarop u bijvoorbeeld de verklaring en verbinding hebt gesloten, is vatbaar voor lekken van bronnen. Ook het laden van het JDBC-stuurprogramma op GET-verzoek is onnodig duur. Doe het gewoon één keer tijdens het opstarten van de applicatie of de initialisatie van de servlet.



  1. Primaire sleutelproblemen en fouten van Rails 4 MySQL bigInt

  2. Controlebeperkingen in PostgreSQL begrijpen

  3. Gegevens invoegen van de ene databasetabel naar een andere databasetabel in Mysql

  4. Hoe rijen in MySQL te samplen met RAND (seed)?