IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Trouver l'origine d'une exception


Sujet :

JDBC Java

  1. #21
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Merci à vous
    Donc j'ai enlevé mes procedures on et off pour initialiser la connexion à la BDD et la fermer dans chacune des mes fonction d'import ou d'export si j'ai bien compris.

    Ici je test avec une un simple TestConnexion() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public static void TestConnexion()
    	throws Exception
    	{
    		try 
    		{
    			Class.forName ("oracle.jdbc.OracleDriver");
    			//Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); 
    			con = DriverManager.getConnection(url, login, pass); // Connexion
    			Statement requete = con.createStatement(); // Création d'une variable pour passer la requete
    			ResultSet resultat = requete.executeQuery (SQL); // On attribue la requete SQL
    		}
    		catch (ClassNotFoundException e1) 
    		{
    			System.out.println("Drivers non trouvés :");
    			e1.printStackTrace();
    		}
    		catch (SQLException e) 
    		{
    			System.out.println("Erreur SQL :");
    			e.printStackTrace();
    		}
    		finally
    		{
    		   if(con!=null)
    		   {
    			   try	
    			   {
    				   con.close();
    			   }
    			   catch(Exception e)
    			   {
    				   e.printStackTrace();
    			   }
    		   }
    		}
    	}
    J'ai donc changé mon forName mais ça ne marche toujours pas. CEPENDANT, je n'ai plus le meme resultat dans la console, ça doit etre signe que je vais finir par y arriver et grâce à vous !

    console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Erreur SQL :
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié
    	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    	at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
    	at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
    	at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
    	at java.sql.DriverManager.getConnection(DriverManager.java:582)
    	at java.sql.DriverManager.getConnection(DriverManager.java:185)
    	at test.CISConnector.TestConnexion(CISConnector.java:71)
    	at test.Main.main(Main.java:29)
     
    			Tue Feb 17 11:40:06 CET 2009
    La derniere ligne de la console prouve que l'execution à bien été jusqu'au bout mais j'ai toujours une java.sql.SQLException.

    Je precise que mon url dorenavant correspont à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String url="jdbc:odbc:thin:@yvas2580:1521:CHS2";

  2. #22
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ton erreur SQL vient que tu n'utilises pas la bonne URL de connexion !

    Donc quel est le driver que tu utilises, et avec quelle l'URL ???



    Sinon pour le chargement de la classe du driver tu peux le faire une fois pour toute au tout début de l'application...



    Enfin pour le try/finally tu peux l'utiliser sans catch, ce qui permet soit de remonter les exceptions soit de les traiter de manière globale, ce qui évite des tests de nullité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		// On crée une nouvelle connexion (dans une variable locale)
    		Connection con = DriverManager.getConnection(url, login, pass);
    		try {
    			// Si on rentre ici c'est que la connexion est créée
     
    			// On crée ici nos Statement/ResultSet
    			// (avec des try/finally)
     
    		} finally {
    			// On ferme la connexion
    			con.close();
    		}
    a++

  3. #23
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    J'utilise le driver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "oracle.jdbc.OracleDriver"
    et l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "jdbc:odbc:thin:@yvas2580:1521:CHS2"
    J'espere que ce sont les informations que tu voulais.

    mmhh voila maintenant mon TestConnexion()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public static void TestConnexion()
    	throws Exception
    	{
    		Class.forName("oracle.jdbc.OracleDriver");
    		con = DriverManager.getConnection(url, login, pass); // Connexion
    		try 
    		{
    			Statement requete = con.createStatement(); // Création d'une variable pour passer la requete
    			ResultSet resultat = requete.executeQuery (SQL); // On attribue la requete SQL
    		}
    		catch (SQLException e) 
    		{
    			System.out.println("Erreur SQL :");
    			e.printStackTrace();
    		}
    		finally
    		{
    		   if(con!=null)
    		   {
    			   con.close();
    		   }
    		}
    	}
    Pour le chargement de la classe du driver, quand je tente de le mettre au tout début de la classe en dessou des imports, il y a des erreurs de syntaxe (visiblement) qui apparaissent
    J'ai trouvé ça comme petit tuto (http://erci.no-ip.com/origine/divers...re08-jdbc.html) mais la maniere de creer la connexion est differente (ou alors c'est moi qui n'ai rien compris au cours de mon prof, ce qui n'est pas impossible non plus)

  4. #24
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    huhu
    Je pense que j'avance ^^
    Je viens de changer mon url, (odbc est passé en oracle) ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url="jdbc:oracle:thin:@yvas2580:1521:CHS2";
    et maintenant dans ma console j'ai toujours la même exception mais plus pour la même raison, enfin je pense.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    java.sql.SQLException: L'instruction SQL à exécuter ne peut être ni vide ni null
    	at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
    	at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445)
    	at oracle.jdbc.driver.OracleSql.initialize(OracleSql.java:110)
    	at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1368)
    	at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:387)
    	at test.CISConnector.TestConnexion(CISConnector.java:39)
    	at test.Main.main(Main.java:29)
    On peut donc voir que c'est parceque ma requete SQL qui passe par la variable du même nom est vide. Cela dit je suis en phase de teste et donc je pense que si je demande à ma requete de me retourner un element d'un tableau, ça doit fonctionner.

    Bon j'espere que je suis sur la bon voix.

  5. #25
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Ma requete n'était pas valide.
    Bon maintenant je n'ai plus d'erreur dans la console lorsque je mets une requete valide. A vrai dire que j'ai plus rien
    Il me reste donc à faire un affichage d'un select pour vérifié le bon fonctionnement de ma connexion et le tour est joué je pense. Avez-vous une idée pour me dire comment faire un affichage basique d'un simple SELECT * FROM Table; en java svp ?
    Je vais continuer de chercher et si je trouve, je reviens clore ce topic

  6. #26
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Un System.out.println(resultat); suffit à me prouver que la connexion marche
    ça me renvois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oracle.jdbc.driver.OracleResultSetImpl@e753
    Donc voili voilou :]

    Encore un grand merci à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Algo] Trouver un arrangement ou une combinaison d'éléments
    Par Morvan Mikael dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 20/04/2013, 11h46
  2. [AC-2007] Erreur 0 et Comment trouver l'origine d'une erreur ?
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/01/2010, 21h04
  3. [JSP] Affichage numéro de ligne d'une exception
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 23/09/2003, 14h59
  4. Réponses: 2
    Dernier message: 28/08/2003, 00h00
  5. Réponses: 3
    Dernier message: 01/11/2002, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo