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

 Oracle Discussion :

Problème insertion BDD Oracle


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut Problème insertion BDD Oracle
    Bonjour,

    Je travaille sur une application en JSP où tout d'abord on saisi un formulaire pour ensuite insérer ses données dans une base de données Oracle et envoyer certaines données à une autre page.
    Mais j'ai des problème au niveau de mes insertions.

    Voici 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <%
    String chp_unite = request.getParameter("unite");
    String chp_aff = request.getParameter("affaire");
    String chp_ctv = request.getParameter("ctv");
     
    Connection dbc = DriverManager.getConnection("jdbc:oracle:thin:@localhost.......",".....","......");
     
    if (chp_unite != null && chp_aff != null && chp_ctv != null )
    {
    		int r_unite;
    		String sqlUnite = "SELECT id_unite FROM unite WHERE nom_unite= ?";
    		PreparedStatement pstmt_unite = dbc.prepareStatement(sqlUnite);
    		pstmt_unite.setString(1, chp_unite);		
    		ResultSet resultat_unite = pstmt_unite.executeQuery();
    		if(resultat_unite.next()) {
    			r_unite = resultat_unite.getInt("id_unite");
    		}
    		PreparedStatement pstmt_aff;
    		pstmt_aff = dbc.prepareStatement("SELECT COUNT(id_numero_Aff) AS nb, num_aff_seq.NEXTVAL AS id_insert, id_numero_Aff FROM numero_Aff WHERE num_affaire = ?;");
    		pstmt_aff.setString(1, chp_aff);		
    		ResultSet resultat_affaire = pstmt_aff.executeQuery();		
    		int r_affaire = -1;
    		if(resultat_affaire.next()) {
    			if(resultat_affaire.getInt("nb") == 0) {
    				r_affaire = resultat_affaire.getInt("id_insert");
    				pstmt_aff = dbc.prepareStatement("INSERT INTO numero_Aff (id_numero_Aff, num_affaire) VALUES (" + r_affaire + ", ?);");			
    				pstmt_aff.setString(1, chp_aff);
    				pstmt_aff.executeUpdate();
    			}
    			else {
    				r_affaire = resultat_affaire.getInt("id_numero_Aff");
    			}
    		}
     
    		PreparedStatement pstmt_fouille;
    		pstmt_fouille = dbc.prepareStatement("SELECT COUNT(id_fouille) AS nb, fouille_seq.NEXTVAL AS id_insert, id_fouille FROM numero_Aff WHERE num_ctv = ?;");
    		pstmt_fouille.setString(1, chp_ctv);		
    		ResultSet resultat_fouille = pstmt_fouille.executeQuery();		
    		int r_fouille = -1;
    		if(resultat_fouille.next()) {
    			if(resultat_fouille.getInt("nb") == 0) {
    				r_fouille = resultat_fouille.getInt("id_insert");
    				pstmt_fouille = dbc.prepareStatement("INSERT INTO fouille (id_fouille, num_ctv, id_ccs, id_date_deb_travaux , id_date_ferm_fouille, id_date_ouv_fouille, id_resp, id_numAdr, id_type_voie, id_nom_voie, id_CP, id_unite, id_numero_Aff, id_libelle_incident, id_entreprise, id_decompte) VALUES (" + r_fouille + ", ?,"+r_ccs+"," + r_debTrav + "," + r_finTrav + "," + r_ouvFouille + "," + r_nomResp + "," + r_numAdr + "," + r_typeVoie + "," + r_nomVoie + "," + r_CP + "," + r_unite + "," + r_affaire + "," + r_libelle + "," + r_nomEntreprise + ",'');");		
    				pstmt_fouille.setString(1, chp_ctv);
    				pstmt_fouille.executeUpdate();
    			}
    			else {
    				r_fouille = resultat_fouille.getInt("id_fouille");
    			}
    		}
    }
    dbc.close();
    %>
    <jsp:forward page="provPonctuel.jsp">
           	<jsp:param value="<%=champUnite%>" name="unite"/>
           	<jsp:param value="<%=champAff%>" name="affaire"/>
           	<jsp:param value="<%=champCTV%>" name="ctv"/> 
    </jsp:forward>
    Merci d'avance.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Et .. ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Cette requête ne s'exécute pas, il me dit une erreur au niveau du executeQuery() donc j'en ai déduit que l'erreur vient de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(id_numero_Aff) AS nb,
           num_aff_seq.NEXTVAL AS id_insert,
           id_numero_Aff
      FROM numero_Aff
     WHERE num_affaire = ?;

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Je sais bien que c'est un problème SQL mais je ne vois pas lequel.

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Il manque un group by.
    C'est exactement le cas qui est décrit dans le lien que j'ai mis.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Je pense pas que se soit un problème de "group by" mais plutôt l'utilisation d'une séquence non autorisé

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Et bien lance la sous sql+ afin d'avoir l'erreur oracle (a moins que tu ne l'aies directement sous JSP)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Toutes mes insertions marchent bien à part la dernière qui m'indique une erreur :
    ORA-02291: violation de contrainte d'intégrité (PEX.SYS_C0023962) - clé parent introuvable
    Pourtant j'ai regardé, toutes mes tables existent bien, mes clés primaires aussi. Si quelqu'un peut m'indiquer la cause de cette erreur.

    Merci.

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    http://ora-02291.ora-code.com/

    La table a une contrainte référentielle sur une table, et dans cette table, il n'y a pas la ligne référence.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Oui j'ai regardé mes références elles sont toutes bien faites.
    Car ce n'est pas la première fois que je fais une base de données où j'utilise des références.

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Regardez mieux, le message est explicite.

    Commencez par afficher les requêtes générées, récupérez le code de celle qui provoque l'erreur, et testez-la avec un outil SQL, pas avec du java.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Dans la table, je fais bien toutes mes références sur la clé primaire des autres tables. C'est bien comme cela qu'il faut faire?

  14. #14
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Oui.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Toutes mes tables sont comme cela.

    Par exemple j'ai deux tables salle et batiment.
    Une salle est dans un batiment.
    Un batiment peux avoir une ou plusieur salle.

    Donc cela donne ceci en sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE salle(
    id_salle int NOT NULL,
    num_salle int,
    id_batiment int,
    PRIMARY KEY(id_salle),
    FOREIGN KEY(id_batiment) REFERENCE batiment(id_batiment)
    );
     
    CREATE TABLE batiment(
    id_batiment int NOT NULL,
    nom_batiment varchar(10),
    PRIMARY KEY(id_batiment)
    );

  16. #16
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Normalement il faut créer la table batiment en premier, je suppose que c'est juste un effet de copier / coller.
    J'espère pour vous que vous utilisez des varchar2 et non des varchar.

    Sinon, je réitère le moyen de débugger que je vous ai donné et que vous n'avez pas suivi :
    Citation Envoyé par Waldar
    Commencez par afficher les requêtes générées, récupérez le code de celle qui provoque l'erreur, et testez-la avec un outil SQL, pas avec du java.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    Oui c'est juste a titre d'exemple. J'ai exécuter la requête dans mon outil SQL, je vois bien la même erreur, même avec des identificateur écrit en dur.

  18. #18
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Et vous avez correctement vérifié les valeurs dans la table référencée par la clef SYS_C0023962 ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 153
    Points : 29
    Points
    29
    Par défaut
    C'est sa le soucis je sais pas ce que représente ce SYS_C0023962

  20. #20
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Ahh.. fallait le dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM all_constraints
    WHERE constraint_name = 'SYS_C0023962'
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Problème insertion BDD
    Par supstoov dans le forum JDBC
    Réponses: 15
    Dernier message: 15/06/2011, 18h49
  2. problème insertion bdd
    Par hugo7 dans le forum VB.NET
    Réponses: 19
    Dernier message: 07/10/2009, 10h13
  3. [MySQL] Problème insertion bdd -> accent
    Par piero53 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/06/2009, 00h33
  4. [2.2.2] Problème connexion BDD Oracle JDBC
    Par BlueSky dans le forum BIRT
    Réponses: 6
    Dernier message: 12/03/2008, 15h22
  5. Problème Création BDD Oracle 9i
    Par artatnas dans le forum Installation
    Réponses: 1
    Dernier message: 27/07/2007, 13h40

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