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 :

[ADO.NET] Valeur d'un champ autoincrémenté


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut [ADO.NET] Valeur d'un champ autoincrémenté
    Bonjour,

    J'ai le code suivant:

    Code C# : 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
     
    private int InsertRecord(LoadA poLoad)
    {
     
    SqlCommand oCmd = new SqlCommand(SQL_INSERT, mcnn);
     
    oCmd.Parameters.Add("@pNInstallation", System.Data.SqlDbType.Int).Value = poLoad.n_installation;
    oCmd.Parameters.Add("@pFName", System.Data.SqlDbType.VarChar).Value = poLoad.f_name;
    oCmd.Parameters.Add("@pNTInstallation", System.Data.SqlDbType.Int).Value = poLoad.n_t_installation;
    oCmd.Parameters.Add("@pFamilyVersion", System.Data.SqlDbType.Int).Value = poLoad.family_version;
     
     
    //oCmd.ExecuteNonQuery();
    //SqlDataReader reader = oCmd.ExecuteReader();
    SqlDataReader reader = oCmd.ExecuteReader(System.Data.CommandBehavior.KeyInfo);
    poLoad.DataChanged = false;
    oCmd.Dispose();
    oCmd = null;
    return 0;
     
    }

    J'insère un enregistrement dans une table avec les données d'un object passé en paramètre. Le problème, c'est que la clé primaire de cette table est un champ autoincrémenté, et j'aimerai connaître ça valeur pour le champ inséré. Est-ce possible sans faire une autre requête?
    J'ai essayé avec différentes solutions (voir code en commentaire) mais sans résultat.

    Merci d'avance

    Salutations

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    non, il faut obligatoirement ou une autre requête, ou une porcédure stockée avec un paramètre de retour/sortie

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    J'ai trouvé une solution.
    1) J'ajoute une requête SELECT après le INSERT
    INSERT INTO ....... ; SELECT SCOPE_IDENTITY() AS NewLoad

    2) et j'exécute avec ExecuteScalar
    object oID = oCmd.ExecuteScalar();

    et j'ai mon nouvel index dans oID.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 616
    Points
    616
    Par défaut
    bonsoir alaino,
    Tu as trouvé une solution, concideres tu ta question comme si c'est le cas merci de la flaggué, sinon je te souhaite bonne chance

    PS : de mémoire tu as le Select @@Identity qui te renvoie ce que tu cherches (je dis bien de mémoire)

    Bonne soiree
    Notalp

Discussions similaires

  1. [VB.NET][ADO.NET] : Taille d'un champs de type texte ?
    Par kleomas dans le forum Contribuez
    Réponses: 5
    Dernier message: 07/01/2007, 16h07
  2. [ADO.NET] valeur insérée, valeurs récupérées !
    Par lebienestrare dans le forum Accès aux données
    Réponses: 2
    Dernier message: 26/12/2006, 08h56
  3. [SQL] récuperer la derniére valeur d'un champ autoincrément
    Par belakhdarbts dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 26/06/2006, 13h37
  4. Réponses: 5
    Dernier message: 10/05/2006, 15h47
  5. [ADO.NET] Comment rendre une certaine colonne "AutoIncrement" ?
    Par maitrebn dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/03/2005, 22h12

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