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

Accès aux données Discussion :

[C#] Comment executer une requete sql y compris @@IDENTITY ?


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 10
    Points : 9
    Points
    9
    Par défaut [C#] Comment executer une requete sql y compris @@IDENTITY ?
    Bonjour tout le monde,
    je souhaiterai faire une requete qui permet d'inserer une ligne dans une table et en meme temps me recuperer id de la ligne qui vient d'etre inserer.je fais la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string desResAtt = this.textBox1.Text;
     
    string requeteInsertRes = "INSERT INTO RESULTATATTENDU 
    (DECRIPTION_REP_ATT) VALUES(\'" + desResAtt + "\');SELECT
     @@IDENTITY AS v_id_resAtt ";


    Pour executer la requete, apres avoir ouvert ma connection, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DbCommand myCmdInsert = new SqlCommand(requeteInsertRes,
     (SqlConnection)cnx);
    maintenant je ne sais pas si je dois faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCmdInsert.ExecuteNonQuery()
    ou un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myCmdInsert.ExecuteReader()
    Si quelqu'un a deja rencontre ce type de requete, pourrait il me dire quelle méthode utiliser ou me donner un exemple?
    je souhaiterai récupérer l'id retournée lors de mon select pour l'insere dans une autre table.
    je vous remercie d'avance pour vos reponses

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    > .ExecuteNonQuery(); pour ton INSERT
    > .ExecuteReader(); pour ton SELECT

    Je ferais deux requetes separées personellement.

    Maintenant il ya peut-etre une methode qui permet de recuperer le dernier id inseré , mais je ne la connais pas.

    Tu utilise quel SGBD ?

    Avec SQLite et la dll , j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQLiteCommand sqlite_cmd;
    SQLiteDataReader sqlite_datareader;
     
    sqlite_cmd.CommandText = "SELECT id FROM test";
    sqlite_datareader = sqlite_cmd.ExecuteReader();
     
    while (sqlite_datareader.Read())
    {
     
        System.Console.WriteLine(sqlite_datareader["id"]);
    }
    (ce code n'est pas de moi , c'etait un exemple de ma lib)

    Tu dois pouvoir adapter a tes requetes.

  3. #3
    Inscrit Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Points : 283
    Points
    283
    Par défaut
    Je me permettrai d'ajouter ceci:

    - Si tu fais 2 requete n'oublie pas de les mettre ds une transaction !!!
    - Pourquoi les gens continue-t-il à ne pas utiliser les requètes parametrées ???

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par bilb0t
    - Pourquoi les gens continue-t-il à ne pas utiliser les requètes parametrées ???
    par simple méconnaissance je pense
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par neguib
    par simple méconnaissance je pense
    exact !

    *part googliser tout ca*

  6. #6
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    Citation Envoyé par folk
    exact !

    *part googliser tout ca*

    Pas besoin d'aller si loin:http://webman.developpez.com/article...eter/vbnet/#L3

    C'est un excellent article pour comprendre tout ca

  7. #7
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    SqlCommand cmd = new SqlCommand("Insert into Employe (EMPFonction,EMPComm,BIId) values (@EMPFonction,@EMPComm,@BIId) set @EMPId = @@Identity",conn);
    cmd.Parameters.Add("@EMPFonction",SqlDbType.Char);
    cmd.Parameters.Add("@EMPComm",SqlDbType.Char);
    cmd.Parameters.Add("@BIId",SqlDbType.Char);
    cmd.Parameters.Add("@EMPId",SqlDbType.Int);
    cmd.Parameters["@EMPId"].Direction = ParameterDirection.Output;

    cmd.Parameters["@EMPFonction"].Value = this.Fonction;
    cmd.Parameters["@EMPComm"].Value = this.Commentaire;
    cmd.Parameters["@BIId"].Value = this.IdBien;

    cmd.ExecuteNonQuery();

    this.Id = (int)cmd.Parameters["@BIId"].Value;
    mieux pour récupérer le dernier id...

Discussions similaires

  1. Comment parser une requete sql sans l'executer
    Par FABFAB125 dans le forum SQL
    Réponses: 2
    Dernier message: 30/11/2007, 17h21
  2. [SQL2K][DTS] Comment executer une requete SQL dans un lot DTS
    Par aloisio11 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/05/2007, 17h38
  3. Réponses: 23
    Dernier message: 19/09/2006, 11h33
  4. Comment executer une requete sql delete dans une jsp ?
    Par DarkWark dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 24/05/2006, 16h59
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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