Récupéré Auto-incrément après insert SqlDataSource

cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 - 15 avril 2010 à 09:14
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 - 16 avril 2010 à 09:41
Bonjour,

Voici mon problème:
J'ajoute un ou plusieurs contact pour un fournisseur, j'ai donc une SqlDataSource qui gère la sélection et l'insertion dans la table (association) contact_fournisseur et
une SqlDataSource qui gère l'insertion et la modification d'un contact (table contact).

Mais lorsque que j'ajoute un contact (avec id auto-incrément) je ne sais pas comment récupérer cet identifiant sans faire une une nouvelle requête sur la BD et puis si deux requête se produisent simultanément, avec cette manière, je ne peux pas garantir la bonne conformité de l'identifiant avec SELECT MAX(id) OU SELECT @@identity.

Merci d'avance de votre aide.


Cordialement

2 réponses

pierrehenri56 Messages postés 63 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 29 octobre 2013 1
15 avril 2010 à 14:46
Bonjour,

oui il est tout à fait possible de récupérer l'identifiant sur une colonne auto-incrémentée.

Tout d'abord il ne faut surtout pas utiliser le MAX(ID) car si deux utilisateurs exécute la requête en même temps, ce n'est pas sûre que tu récupère ton bon ID.

Il faut donc utilisé le SELECT @@identity, qui te renverra l'identifiant de la ligne que tu viens de créer.

Voici un exemple très simplifié :

SqlConnection connect = new SqlConnection("Ta connectionString");

connect.Open();

SqlCommand cmd = new SqlCommand("INSERT INTO TaTable (COL1) VALUES ('TOTO'); SELECT @@IDENTITY as ID");

cmd.Connection = connect;

object newId = cmd.ExecuteScalar();
 
connect.Close();


En espérant avoir résolu ton problème.
0
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
16 avril 2010 à 09:41
Bonjour,

Je connais cette méthode mais ce que je voulais savoir c'est si on pouvait récupérer cette id sans faire un aller /retour base de données mais en cherchant dans la SqlDataSource que je j'utilise pour faire l'insert.

Merci d'avance !


Cordialement
0
Rejoignez-nous