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 :

Retourner une clé primaire Oracle


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Par défaut Retourner une clé primaire Oracle
    Bonjour,

    J'ai un petit souci avec mon code.

    J'ai un code qui doit effectuer un INSERT dans une base de donnée Oracle puis me retourner l'ID de la clé primaire généré.

    L'ID de la clé primaire est générée automatiquement coté server avec un trigger et une séquence.

    j'avé utilisé ce code pour faire la mème chose sur une BDD MySQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mon_statement.executeUpdate(Requete, Statement.RETURN_GENERATED_KEYS); // Execution de la requète avec recupération de l'ID de la demande
    ResultSet clefs =  mon_statement.getGeneratedKeys();
     
    // Récupération de l'ID autogénéré de la demande d'intervention
    if(clefs.next()){
    		myDemande.setIdDemande(clefs.getString(1));
    }
    Cépendant pour le passage à Oracle elle ne fonctionne plus :

    j'ai un message d'erreur : "Fonction non prise en charge a la ligne mon_statement.executeUpdate(Requete, Statement.RETURN_GENERATED_KEYS);

    Apres test si je change tout le code en ne métant que ca tous fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_statement.executeUpdate(Requete);
    Visiblement c'est Statement.RETURN_GENERATED_KEYS qui pose problème.

    Comment retourner l'id auto généré apres un INSERT sur une base de donnée Oracle ?

    Sachant que j'arrive bien a me connecter a la base de données et à exécuter des requêtes sans problèmes. J'utilise Oracle 9i et le driver JDBC associé.

    Merci beaucoup

  2. #2
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Tu peux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ta_sequence.nextval FROM dual
    Récupérer ta valeur, puis faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO ta_table(ta_pk,...) VALUES(ta_sequence.currval,...)
    Avec la même Connection

    Ya peut-être mieux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Par défaut
    ok merci je vais regarder ca !

    mais pk ca fonctionne avec MySQL et pas Oracle ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Par défaut
    Bon enfaite je vais utiliser ce que tu propose apparemment c'est une bonne solution, j'ai surtout peur d'un problème de concurence entre utilisteur avec cette technique.

    Cependant tu me confirme que je dois supprimer le trigger ? et n'utiliser que la sequence

  5. #5
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Oui je pense, sinon ta séquence sera incrémentée 2 fois.

    Pour la concurrence j'ai testé en prenant 2 sessions du même user avec les outils Oracle, a priori il n'y a pas de problème.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Par défaut
    Oui effectivement je confirme ça fonctionne

    MERCI

Discussions similaires

  1. Oracle : Case dans Where qui retourne une liste
    Par stof dans le forum Oracle
    Réponses: 9
    Dernier message: 29/07/2011, 10h21
  2. [Oracle] PHP ne retourne que la dernière ligne d'un resultat d'une procedure stockée ORACLE
    Par tytous dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 08/06/2010, 07h57
  3. [Oracle] modification d'une clé primaire composée
    Par petburn dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2006, 15h58
  4. Réponses: 9
    Dernier message: 14/10/2005, 18h32
  5. Conseils pour developper une application avec Oracle
    Par belugha dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2003, 16h03

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