[C#][Base de donnée] récupérer identifiant auto-incrémenté

[Résolu]
Signaler
Messages postés
81
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
7 février 2007
-
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Statut
Membre
Dernière intervention
9 mai 2012
-
Bonjour,



j'ai un ptit problème.. :-)



Voilà, j'ai un programme en C# et une base de donnée Access. Dans mon
programme, j'ai un form qui me permet d'ajouter de nouveau client.

Je crée un client, ok...

MAintenant j'aimerais pouvoir directement le modifier sans devoir
fermer ce form et le réouvrir. Le problème est que pour faire mon
update j'ai besoin de l'identifiant incrémenté qui a été créé dans la
base de donnée sous ma clés primaire.

Comment faire ?



J'ai trouvé une solution sur un site qui consiste à ajouter une valeur
aléatoire, ensuite retrouver l'ID avec cette valeur et modifier la
valeur avec la correcte.

ex : pour l'âge, on met 5000 ans. Ensuite on recherche l'utilisateur
qui a 5000 ans. On trouve son identifiant et on update son age à 26
ans...

Mais bon ca me semble dûr comme solution, rien de plus pratique comme en MySQL ??? mysql_insert_id()



Avez -vous d'autres trucs à me proposer ?

Merci




Bibicool

4 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Messages postés
81
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
7 février 2007
1
Merci pour l'info... je vais essayer de comprendre tout ca et voir si ca s'applique à mon code,

Bibicool
Messages postés
81
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
7 février 2007
1
Super, MorpionMX, ca marche vraiment bien.



Pour info pour les suivants, j'ai simplement implémenté ceci :



int newID = 0;

OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY", MyConnection);

newID = (int)idCMD.ExecuteScalar();



Access accepte le @@IDENTITY... pour retrouver le dernier ID autoincrémenté.


Bibicool
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Statut
Membre
Dernière intervention
9 mai 2012
2
voila cette méthode , juste changer le nom de votre table et la commande (SqlCommand)
tout dépend de votre SGBD. et n oublier pas de déclarer votre connexion (con) .
SqlCommand : SQL SERVER
oleDbCommande ; access
.
.
.




Int32 Id;
string SqlString1 = "SELECT IDENT_CURRENT('PERSONNE')";
SqlCommand Com = new SqlCommand(SqlString1, con);
con.Open();
Id = Convert.ToInt32(Com.ExecuteScalar());

b.chnace.