7
votes

java.sql.sqxception: exception IO: obtenu moins un d'un appel de lecture lors de la connexion JDBC avec Oracle

salut je suis nouveau à Java lorsque j'ai essayé de connecter Oracle avec mon code d'exemple Java, j'ai obtenu l'exception ci-dessus

mon code est xxx

et l'exception levée est xxx

aidez-moi à résoudre ce


0 commentaires

7 Réponses :


2
votes

typiquement oracle utilise le port 1521 pour l'accès à la base de données et vous souhaitez utiliser le port 8080 à la place. Vous devez vérifier pour vous assurer que vous avez spécifié le bon port.


1 commentaires

J'ai essayé avec 1521 aussi mais dans ce cas, il a refusé de se connecter avec la base de données et une erreur ORA 12505 a été obtenue.



1
votes

Une erreur que je vois est que vous devez faire un RS.Next (); Cela permettra de réaliser des premiers résultats.

par exemple xxx


0 commentaires

10
votes

Premièrement, l'URL de connexion est fausse. La poste 8080 est normalement utilisée par un serveur Web comme Apache Tomcat. Oracle lui-même utilise un port par défaut de 1521. Voir également Cet oracle Documentation JDBC .

En outre, vous avez oublié d'appeler RESUNTS # Suivant () . Cela définira le curseur sur la ligne suivante de la série de résultats. L'ensemble de résultats est renvoyé avec le curseur avant la première ligne. Tout getxxx () appelle sur le (code> ResultatsSet échouera si vous ne déplacez pas le curseur.

Si vous attendez plusieurs rangées dans un ensemble de résultats, Ensuite, vous devez utiliser pendant boucle: xxx

ou si vous n'attendez qu'une ligne, vous pouvez également aller de l'avant avec un si Énoncé: xxx

Pour plus d'astuces et des exemples d'utilisation de Basic JDBC de la bonne manière (aussi dans JSP / servlet), vous pouvez trouver Cet article utile. La façon dont vous avez fermé la déclaration et la connexion par exemple est sujette aux fuites de ressources. Chargement également que le pilote JDBC sur la demande d'obtenir est inutilement coûteux. Faites-le juste une fois lors de l'initialisation du démarrage ou du servlet d'application.


3 commentaires

Quand j'ai débogué le programme, j'ai trouvé que l'exception projetée à la connexion Con = drivermanager.geconnection ("JDBC: Oracle: mince: @Localhost: 808 0: Orcl", "Système", "Tiger"); Pouvez-vous s'il vous plaît passer à travers cette ligne


Corrigez l'URL de connexion en premier. Oracle n'écoute certainement pas sur le port 8080. C'est généralement Tomcat qui écoute sur 8080 et ce n'est pas un serveur DB. Oracle utilise par défaut 1521.


Je vois dans l'autre commentaire que vous avez reçu un ora 12505 lorsque vous utilisez 1521, dans ce cas, vérifiez simplement ora-code.com: ora-12505.ora-code.com



0
votes
package testing;

import java.sql.DriverManager;
import java.sql.Connection;

import java.sql.SQLException;
import java.sql.*;

public class OracleJDBC {

    public static void main(String[] argv) {

        System.out.println("-------- Oracle JDBC Connection Testing ------");

        try {

            Class.forName("oracle.jdbc.driver.OracleDriver");

        } catch (ClassNotFoundException e) {

            System.out.println("Where is your Oracle JDBC Driver?");
            e.printStackTrace();
            return;

        }

        System.out.println("Oracle driver registered");
        Connection conn=null;

        try {

            conn = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:orclh", "scott",
                    "tiger");

            Statement stmt= conn.createStatement();
            ResultSet r=stmt.executeQuery("Select * from emp");
            while(r.next()){
            String str= r.getString("ename");
            System.out.println (str);
            }

        } catch (SQLException e) {

            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return;

        }
    }
}

0 commentaires

0
votes

solution 1:

Je pense que cette exception est due au problème de l'environnement interne du système d'exploitation.

J'ai le même problème avec type 4 pilote. Mais type 1 pilote ne donne pas à cette exception. Donc, j'utilise actuellement type 1 pilote.

Vérifier le numéro de port, sid au tnsnames.ora

c: \ oracexe \ app \ oracle \ product \ 10.2.0 \ serveur \ Network \ admin \ Sample \ tnsnames.ora

solution 2:

Installez VMware sur votre ordinateur, Installez le système d'exploitation, puis le programme fonctionnera avec le pilote type 4 .


0 commentaires

0
votes

Je sais que ce fil est un peu vieux, mais voici ce qui a fonctionné pour moi.

Vérifiez la connexion à l'aide d'un client Oracle DB comme le développeur SQL ou quelque chose d'autre pour vous assurer que la chaîne de connexion fonctionne et capable de se connecter à la DB avec elle. Si vous utilisez Oracle DB Express Edition, qui est XE, SID est XE et le port est 1521, peu importe où le client Web est en cours d'exécution. Vous pouvez également vérifier cela à partir des paramètres du client Web et d'autres endroits.


0 commentaires

-1
votes
  ("jdbc:oracle:thin:@localhost:1521:abcd","your_db_name","your_password")  

3 commentaires

Cette question a déjà reçu une réponse acceptée et adoptée il y a 3 mois et votre réponse tardive n'ajoute rien de nouveau.


@ Christiankönig quand j'ai cherché cela je n'ai pas eu la réponse appropriée.


Vous êtes sur la page exacte où la réponse est écrite - faites défiler vers le sommet et lisez la réponse fournie par Balusc - elle commence par Premièrement, l'URL de connexion est fausse. La poste 8080 est normalement utilisée par un serveur Web comme Apache Tomcat. Oracle lui-même utilise un port par défaut de 1521 .