Récuperer id auto increment apres insert

morad_smi Messages postés 26 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 18 août 2008 - 21 juil. 2008 à 11:33
ensto28 Messages postés 87 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 23 mars 2011 - 28 mai 2009 à 10:43
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 !!!
A voir également:

8 réponses

cs_Scooper Messages postés 71 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 12 septembre 2013
21 juil. 2008 à 12:36
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 juil. 2008 à 13:08
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-
0
morad_smi Messages postés 26 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 18 août 2008
21 juil. 2008 à 13:30
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 !!!
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 juil. 2008 à 13:32
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-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
morad_smi Messages postés 26 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 18 août 2008
21 juil. 2008 à 14:05
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
0
cs_Scooper Messages postés 71 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 12 septembre 2013
21 juil. 2008 à 15:18
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
21 juil. 2008 à 15:29
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-
0
ensto28 Messages postés 87 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 23 mars 2011
28 mai 2009 à 10:43
Bonjour:
j'ai un Problème : je voudrai crée séquence  sql sevrer qui permet incrément " id employer "
merci d'avence
0
Rejoignez-nous