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 :

probléme d'une requéte jdbc /eclipse


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Par défaut probléme d'une requéte jdbc /eclipse
    bonjour
    j'ai un probléme
    j'ai créer une requéte qui permet d'inserer des données dans la table DEMANDE_ABONNEMENT qui contient les clés étrangére des autres tables dont j'ai fait la jointure avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PreparedStatement i =con.getcon().prepareStatement("INSERT INTO DEMANDE_ABONNEMENT(NUMDEMABON,ADRESLOCALAB,VILLELOCALAB, CODETYPEREGAB,CODETYPEDEMAB,CODECLIE)values(SEQ_DEMAB,'"++"','"++"','"++"','"++"','"++"')WHERE LOGUTIL like '"++"' AND  DEMANDE_ABONNEMENT.CODECLIE=CLIENT.CODECLIE AND DEMANDE_ABONNEMENT.CODETYPEDEMAB=TYPE_DEMANDE_ABONNEMENT.CODETYPEDEMAB AND DEMANDE_ABONNEMENT.CODETYPEREGAB=TYPE_REGLEMENT_ABONNEMENT.CODETYPEREGAB" );
    ResultSet r=i.executeQuery();
    LOGUTIL EST UN CHMAPS DE LA TABLE CLIENT
    IL M4AFFICHE UNE ERREUR
    sql ne se termine pas correctement pourquoi cette erreur?????
    R:entre++ j'ai mis des

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Avoir l'erreur en question (avec en prime le getMessage()) ça pourrait nous aider à identifier la source du problème...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est pas du tout comme ça qu'on utilise un preparedStatement...
    En plus, tu as une commande d'insertion et tu utilises executeQuery qui est prévue pour un select.

    Tu devrais faire quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PreparedStatement pstmt = connection.prepareStatement("insert into nomDeTable(colInt, colString, colDate) values(?, ?, ?);
    pstmt.setInt(1, unInt);
    pstmt.setString(2, unString);
    pstmt.setDate(3, uneSQLDate);
    pstmt.execute();
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Par défaut
    merci pour votre réponse mais est ce que vous pouvez m'expliquer le 1,2,3 que signifie ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PreparedStatement pstmt = connection.prepareStatement("insert into nomDeTable(colInt, colString, colDate) values(?, ?, ?);
    pstmt.setInt(1, unInt);
    pstmt.setString(2, unString);
    pstmt.setDate(3, uneSQLDate);
    pstmt.execute();
    car les données a inserés proviennent d'un formulaire donc j'utilise des variables au lieu de "?.?,? "
    et j'utilise plusieur requéte successive mais sauf celle de l'insertion qui ne marche pas
    est ce dans ce cas j'utilise coméme la methode que vous m'avez proposez??(en haut)

    je vous montre mon code :
    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
     
    try{	
    				PreparedStatement i =con.getcon().prepareStatement("SELECT CODECLIE FROM CLIENT WHERE LOGUTIL like '"+numutiisateur+"'");
    				ResultSet r=i.executeQuery();
    				while(r.next())
    				{
    				clie=r.getString("CODECLIE");
    				System.out.println(clie);
    				}
    			   } catch (Exception e) 
    			                         {
    				 e.printStackTrace();
    									  }
    			   try{	
    					PreparedStatement i =con.getcon().prepareStatement("SELECT CODETYPEREGAB FROM TYPE_REGLEMENT_ABONNEMENT WHERE LIBTYPREGAB like '"+paiement+"'");
    					ResultSet r=i.executeQuery();
    					while(r.next())
    					{
    					reg=r.getString("CODETYPEREGAB");
    					System.out.println(reg);
    					}
    				   } catch (Exception e) 
    				                         {
    					 e.printStackTrace();
    										  }
    				   try{	
    						PreparedStatement i =con.getcon().prepareStatement("SELECT CODETYPEDEMAB FROM TYPE_DEMANDE_ABONNEMENT WHERE LIBTYPEDEAB like '"+abon+"'");
    						ResultSet r=i.executeQuery();
    						while(r.next())
    						{//+SEQ_DEMABON.nextval+
    						ab=r.getString("CODETYPEDEMAB");
    						System.out.println(ab);
    						}
    					   } catch (Exception e) 
    					                         {
    						 e.printStackTrace();
    											  }
    					   try{	
    						   PreparedStatement i =con.getcon().prepareStatement("INSERT INTO DEMANDE_ABONNEMENT(NUMDEMABON,ADRESLOCALAB,VILLELOCALAB, CODETYPEREGAB,CODETYPEDEMAB,CODECLIE)values(23,'"+adresse+"','"+ville+"','"+reg+"','"+ab+"','"+clie+"')WHERE LOGUTIL like '"+numutiisateur+"' AND  DEMANDE_ABONNEMENT.CODECLIE=CLIENT.CODECLIE AND DEMANDE_ABONNEMENT.CODETYPEDEMAB=TYPE_DEMANDE_ABONNEMENT.CODETYPEDEMAB AND DEMANDE_ABONNEMENT.CODETYPEREGAB=TYPE_REGLEMENT_ABONNEMENT.CODETYPEREGAB" );
    							ResultSet r=i.executeQuery();
     
    						   } catch (Exception e) 
    						                         {
    							 e.printStackTrace();
    												  }
    merci d'avance

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Le 1, 2, 3 etc correspondent à la position du ? dans la requête du preparedStatement.
    L'assignation de la valeur étant typée, on s'affranchit de tous les problèmes std comme :
    - les apostrophes dans une chaîne de caractères
    - le format des dates
    - les boolean (des fois '1' et '0', d'autres fois 1 et 0)
    et d'autres

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 65
    Par défaut
    j'ai compris maint est votre methode marche mais est ce que vous avez une idée sur comment je peut utiliser une sequence sur cette requéte ???
    c'est que je doit incrémenter les champs automatiquement je ne peut pas donner des valeurs précise surtout que la tables dont je vais faire l'insertion est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PreparedStatement pstmt = connection.prepareStatement("insert into nomDeTable(nom de ma sequence, colString, colDate) values(?, ?, ?);
    pstmt.setInt(1, nom de ma sequence);
    pstmt.setString(2, unString);
    pstmt.setDate(3, uneSQLDate);
    pstmt.execute();
    merci

Discussions similaires

  1. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  2. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  3. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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