begin process at 2008 09 06 18:38:47
1 237 892 membres
276 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [c# et sql server] @@Identity (récupérer un numéro auto) [ Archives / .NET ] (Kati83)

[c# et sql server] @@Identity (récupérer un numéro auto) le 17/05/2004 16:03:07

Kati83
Bonjour,

Je voudrais savoir comment on fait pour récupérer l'id d'une ligne que l'on vient d'insérer et qui est un numéro auto.
J'ai trouvé des exemples dans la doc, mais ils sont en asp, et moi je voudrais pouvoir faire ça en c#

D'après ce que j'ai trouvé sur http://www.devparadise.com/technoweb/code/sql/A436.asp, il suffite de faire la requete insert suivie de ; SELECT @@IDENTITY as ID

Mais je ne parviens pas à le mettre en place avec c#

Merci pour votre aide.


*** Kati ***

Re : [c# et sql server] @@Identity (récupérer un numéro auto) le 18/05/2004 00:44:36

jijedslenoir
Exemple de solution possible :
Ajout d'un nouveau fournisseur dans la table Suppliers de la base northwind


try
{
// Connexion a la base de donnee sql serveur
SqlConnection sqlConn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=ORDI-JIJE\SQL");

// Commande d'insertion d'un nouveau fournisseur + retour de la valeur identity
SqlCommand sqlCmd = new SqlCommand("INSERT INTO Suppliers (CompanyName) VALUES ('Test');SELECT @@IDENTITY;", sqlConn);

// Ouvre la connexion
sqlCmd.Connection.Open();

// Execute la commande d'insertion avec lecture de l'identity
int iIdentity = Convert.ToInt32((decimal)sqlCmd.ExecuteScalar());

// Ferme la connexion à la base
sqlCmd.Connection.Close();

// Affiche l'identity du nouveau fournisseur
MessageBox.Show(string.Concat("Le nouveau fournisseur a pour ID : ", iIdentity.ToString()));
}
catch(Exception exc)
{
MessageBox.Show(string.Concat("Erreur : ", exc.Message));
}


Dans cette exemple, l'ajout du fournisseur est réalisé par une simple requete. Mais il est préférable d'utiliser des procedures stockées pour travailler sur une base de données...



Oui c'est moi, là-bas dans le noir!

Re : [c# et sql server] @@Identity (récupérer un numéro auto) le 18/05/2004 09:46:29

Kati83
Ok, merci beaucoup pour ton aide.
En fait, j'utilise toujours les proc stockées, c plus propre je trouve...
En fait, j'avais fait une erreur toute bête : je n'utilisais pas executescalar, mias executereader, et il me générais des exceptions en rapport avec des cast invalides...
Bref, merci beaucoup, ça tourne impec maintenant !

Bonne journée

PS : très stylée la photo...

*** Kati ***

Re : [c# et sql server] @@Identity (récupérer un numéro auto) le 02/11/2005 16:49:10

scoubidou944
C'est violent vos méthodes
ExecuteScalar() c'est bien beau mais si tu supprimes un element au milieu, à la prochain incrémentation ca pète si tu as activé la non gestion des doublons.

Notre amis le coq n'aurait pas une solution miracle en 2 lignes ?

----------------------------
C++ forever
C# amateur


Classé sous : récupérer, sql, numéro, auto, identity

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS