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 :

[JDBC] Erreur très bizarre dans ExecuteQuery


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut [JDBC] Erreur très bizarre dans ExecuteQuery
    Bonjour, j'ai fait un programme qui se connecte à une base de données etqui permet d'éxecuter des requetes sql. La base est une base oracle. Mon problème c'est que mes requetes ne renvoient pas de ResultSet !!
    Je précise que mes requetes marchent quand je les tape à l'identique sous sqlplus et que la connexion à la base de données fonctionne sans problèmes.

    voici une partie de la classe session qui gère les acces à la base :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import java.sql.*;
     
    public class Session3 {
    	private Connection connec;
     
     
    	public Session3(String login, String mdp) throws SQLException {
     
    		// CHARGEMENT du driver JDBC ORACLE
    		try{
    			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    		}
    		catch(SQLException e){
    			System.out.println("Driver de connection a la base Oracle non trouve");	
    		}
     
    		// CONNECTION à la base de données
     
    		try {
    			connec = DriverManager.getConnection("jdbc:oracle:thin:@infolin:1521:DB01", login, mdp);
    		} 
    		catch (SQLException sqle) {
    			sqle = new SQLException();
    			throw sqle;
    		}
     
     
    	}
     
     
    	public void listeEmployes(int unNuServ) throws SQLException{
     
    		try {
    			String sql ="SELECT nuempl, nomempl, hebdo, nomserv FROM employe, service WHERE employe.affect = service.nuserv AND service.nuserv = ?;";
    			PreparedStatement pStmtListeEmployes = connec.prepareStatement(sql);
    			pStmtListeEmployes.setInt(1,unNuServ);
    			ResultSet resultat = pStmtListeEmployes.executeQuery();
    			pStmtListeEmployes.close();
     
    			while (resultat.next()) {
    				System.out.println(" N°"+resultat.getInt("nuempl")+", Nom: "+resultat.getString("nomempl")+", Travail hebdo: "+resultat.getInt("hebdo")+" H, Service: "+resultat.getInt("nuserv"));
    			}
    		}
    		catch(SQLException sqle){
    			sqle = new SQLException();
    			throw sqle;
    	}
    	}
     
    }
    à l'origine il y'à plus de méthodes que cà mais meme sur ce bout de code la fonction "listeEmployes" ne marche pas.je la teste avec un ptit mai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.sql.*;
    public class Main2 {
     
    	public static void main(String[] args) {
    		try{
    		Session3 ses = new Session3("i2c03a","i2c03a");
    		ses.listeEmployes(1);
    		} catch (SQLException sqle){
    			System.out.println("erreur");
    		}
    	}
    }
    Ah, et j'ai aussi essayé avec une Statement simple au lieu de preparedStatement.
    D'après mes tests, la fonction passe dans l'exception lors du executeQuery....

    J'ai passé desheures à chercher l'erreur j'en peux plus je vois vraiment pas où est le problème.J'ai besoin de votre aide ! Je compte sur vous !
    Merci d'avance pour votre soutien !

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Travaille sur ton ResultSet puis ensuite, ferme ton PreparedStatement (alors que là, tu le fermes puis tu parcours ton ResultSet).

    Edit: En gros, tu fais ça quoi :

    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
     
       public void listeEmployes(int unNuServ) throws SQLException{
          PreparedStatement pStmtListeEmployes = null;
          try {
             String sql ="SELECT nuempl, nomempl, hebdo, nomserv FROM employe, service WHERE employe.affect = service.nuserv AND service.nuserv = ?;";
             pStmtListeEmployes = connec.prepareStatement(sql);
             pStmtListeEmployes.setInt(1,unNuServ);
             ResultSet resultat = pStmtListeEmployes.executeQuery();
             while (resultat.next()) {
                System.out.println(" N°"+resultat.getInt("nuempl")+", Nom: "+resultat.getString("nomempl")+", Travail hebdo: "+resultat.getInt("hebdo")+" H, Service: "+resultat.getInt("nuserv"));
             }
          }
          catch(SQLException sqle){
             sqle = new SQLException();
             throw sqle;
       } finally {
             pStmtListeEmployes.close();
       }
       }
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Enlève le ";" dans ta requête.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Alors, j'ai supprimer le ";" dans ma requête et mis la fermeture du statement dans la clause finally. Deja la requete marchait, mais c'est au niveau de la récupération des résultats que cv'était mauvais.Alors j'ai remplacé mes getInt par des getString et mis en paramètre le numéro de la colonne au lieu de son nom et ca marche !!!!

    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 void listeEmployes(int unNuServ) throws SQLException{
    		PreparedStatement pStmtListeEmployes = null; 
    		try {
    			String sql ="SELECT nuempl, nomempl, hebdo, nomserv FROM employe, service WHERE employe.affect = service.nuserv AND service.nuserv = ?";
    			pStmtListeEmployes = connec.prepareStatement(sql);
    			pStmtListeEmployes.setInt(1,unNuServ);
    			System.out.println("test avant execution");
    			ResultSet resultat = pStmtListeEmployes.executeQuery();
    			System.out.println("test apres execution");
    			while (resultat.next()) {
    				System.out.println(" N°"+resultat.getString(1)+", Nom: "+resultat.getString(2)+", Travail hebdo: "+resultat.getString(3)+" H, Service: "+resultat.getString(4));
    			}
    		}
    		catch(SQLException sqle){
    			sqle = new SQLException();
    			throw sqle;
    	}
    		finally{
    			pStmtListeEmployes.close();
    		}
    	}
     
    }
    Merci pour votre aide !!!

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut [JDBC] Erreur de ExecuteUpdate ajout dans une bd oracle
    Aie ! Autre problème, toujours la connection qui s'effectue bien, mais là: erreur au niveau du executeUpdate() ben sqlexception...
    ca marche nickel sous sqlplus quand je fais
    INSERT INTO employe VALUES(11,'boudou',10,2);
    par exemple..

    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
    public void ajoutEmploye(int unNuempl, String unNomempl,int unHebdo, int unAffect)throws SQLException{	
    		//CallableStatement cStmtAjoutEmploye = null;
    		PreparedStatement pStmtAjoutEmploye = null;
     
    		try {
    			/* Version callableStatement
    			String sql= "{call usertest.testgestion.AJOUT_EMPLOYE(?,?,?,?)";
    			cStmtAjoutEmploye = connec.prepareCall(sql);
    			cStmtAjoutEmploye.setInt(1,unNuempl);
    			cStmtAjoutEmploye.setString(2,unNomempl);
    			cStmtAjoutEmploye.setInt(3,unHebdo);
    			cStmtAjoutEmploye.setInt(4,unAffect);
    			resultat = cStmtAjoutEmploye.executeUpdate();
    			*/
     
    			/* Version preparedStatement*/
    			String sql ="INSERT INTO employe VALUES(?,?,?,?)";
    			pStmtAjoutEmploye = connec.prepareStatement(sql);
    			pStmtAjoutEmploye.setInt(1,unNuempl);
    			pStmtAjoutEmploye.setString(2,unNomempl);
    			pStmtAjoutEmploye.setInt(3,unHebdo);
    			pStmtAjoutEmploye.setInt(4,unAffect);
    			pStmtAjoutEmploye.executeUpdate(sql);
    		}
    		catch(SQLException sqle){
    				sqle = new SQLException();
    				throw sqle;
    		}
    		finally {
    			pStmtAjoutEmploye.close();
    			//cStmtAjoutEmploye.close();
    		}
    	}
    quelqu'un à une idée ? :

  6. #6
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Quelle est ton erreur SQLException ?

    Sinon, dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
             pStmtAjoutEmploye.setInt(1,unNuempl);
             pStmtAjoutEmploye.setString(2,unNomempl);
             pStmtAjoutEmploye.setInt(3,unHebdo);
             pStmtAjoutEmploye.setInt(4,unAffect);
    es-tu bien sûr de donner des bons objects (ie unNuempl, unHebdo, unAffect sont des int, unNomempl un String) ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    c'est réglé : voila ce que j'ai écrit à la place :
    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
    public void ajoutEmploye(int unNuempl, String unNomempl,int unHebdo, int unAffect)throws SQLException{	
    		PreparedStatement pStmtAjoutEmploye = null;
    		String sql = "INSERT INTO employe values(?,?,?,?)";
    		try {
    			pStmtAjoutEmploye = connec.prepareStatement(sql);
    			pStmtAjoutEmploye.setInt(1,unNuempl);
    			pStmtAjoutEmploye.setString(2,unNomempl);
    			pStmtAjoutEmploye.setInt(3,unHebdo);
    			pStmtAjoutEmploye.setInt(4,unAffect);
    			pStmtAjoutEmploye.executeUpdate();
    		}
    		catch(SQLException sqle){
    				throw sqle;
    		}
    		finally {
    			pStmtAjoutEmploye.close();
    		}
    	}
    et ca marche ! merci de m'avoir proposé ton aide en tout cas !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur tres bizarre dans un test unitaire
    Par BlueMagma dans le forum Django
    Réponses: 3
    Dernier message: 14/09/2011, 17h26
  2. [Gtk] Erreur très bizarre : g_main_dispatch
    Par Aspic dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 08/12/2009, 07h21
  3. Erreur très bizarre concernant l'envoi d'un mail !
    Par matthew016 dans le forum Outlook
    Réponses: 5
    Dernier message: 07/08/2007, 15h30
  4. erreur très bizarre
    Par sandytarit dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 16/01/2007, 17h00
  5. erreur bizarre dans une page asp
    Par leclone dans le forum ASP
    Réponses: 1
    Dernier message: 19/05/2006, 01h28

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