Récuperer id auto increment apres insert

Signaler
Messages postés
26
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
18 août 2008
-
Messages postés
87
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
23 mars 2011
-
Bonjour chers développeurs !!!
j'ai un grand problème qui me tracasse, je suis bloqué depuis la semaine dernière
au fait le truc est simple et assez fréquent, je dois récupérer mon id auto increment après une insertion ( c#, framework 3.5, sql server 2005)
j'ai regardé partout et tout le monde dit la même chose : il faut faire ça après l'insert :
string requete = "SELECT SCOPE_IDENTITY()";

SqlCommand sel = new SqlCommand();

sel.Connection = conn;

sel.CommandText = requete;

userId = (int)sel.ExecuteScalar();

sauf que ceci ne marche pas et l'erreur que j'ai est "impossible de faire le cast" !!!
merci pour vos réponses ça va grave m'aider !!!

***MoraD***, ceux qui ne font rien ne se trompent jamais !!!

8 réponses

Messages postés
71
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
12 septembre 2013

Salut,

En c# 2.0 je fais ca et ca marche :

 StringBuilder sb = new StringBuilder();

 sb.Append("INSERT INTO\n");
 sb.Append("dbo.XXXn");
 sb.Append("("XXX", "YYY", ...");
 sb.Append("VALUES");
 sb.Append("(@XXX, @YYY, ....;\n");
 sb.Append("SELECT @@IDENTITY\n");

SqlCommand command = new SqlCommand(sb.ToString(), con);

SqlParameter param = new SqlParameter("@XXX", SqlDbType.XXX,myVal.Lenght);
param.Value = myVal;
command.Parameters.Add(param);
...

object obj = command.ExecuteScalar();
if (obj != null)
{
           userID  = int.Parse(obj.ToString());
}

en esperant que ca marche en 3.5
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,
En .NET 3.5, avec Linq:

        public int AddMyObj(....)
        {
            int Id = 0;
            MyObj myObj= new MyObj();


           myObj.XXX = YYYY;
           myObj.XYZ = ABCD;

           using (var db = new MyDataContext())
          {
                db.MyObj.InsertOnSubmit(myObj);
                db.SubmitChanges();
                Id = myObj.Id;
          }
          return Id;
       }


<hr />
-My Blog-
Messages postés
26
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
18 août 2008

Merci beaucoup pour vos réponses !!!
alors pour Scooper : j'ai cette erreur :"Le format de la chaîne d'entrée est incorrect." pour : userID  = int.Parse(obj.ToString());
et pour Bidou j'ai rien compris de ce que t'as écrit  :s aurais-tu un peu de temps à m'expliquer davantage ?
merci

***MoraD***, ceux qui ne font rien ne se trompent jamais !!!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Euh, tu sais ce que c'est linq?
Si non, alors il faut que tu regardes de quoi ça parle, quand on fait du framework 3.5 c'est très utile....

<hr />
-My Blog-
Messages postés
26
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
18 août 2008

non pas du tout :s je vais regarder !!!
cela dit il n'y a pas plus simple pour faire ce que je veux faire ?
Merci
Messages postés
71
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
12 septembre 2013

regarde en debuggant ce que tu as dans obj si c'est bien le dernier ID de ta table qui est retournée,
dans mon INSERT, j'envoi 2 commandes : le insert puis le SELECT @@IDENTITY qui est retourné par executescalar
si en debuggant tu n'a rien dans obj c'est qu'il y a une autre erreur autre part je ne saurait t'aider je ne connais pas le framework 3.5
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Il n'y a rien de plus simple que ce que je t'ai indiqué plus haut.
C'est à peine 10 lignes qui se court après...

<hr />
-My Blog-
Messages postés
87
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
23 mars 2011

Bonjour:
j'ai un Problème : je voudrai crée séquence  sql sevrer qui permet incrément " id employer "
merci d'avence