Sgbd + problème

Résolu
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 8 nov. 2005 à 13:48
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 8 nov. 2005 à 16:10
Bonjour à tous,



J'ai une fonction qui me permet de ajouter une nouvelle personne dans mon sgbd sqlserver :



---------------



SqlCommand command = new SqlCommand() ;



String requete = "INSERT INTO PERSONNE(PRENOM) VALUES @personne_prenom" ;



command->Parameters.Add("@apersonne_prenom",SqlDbType.VarChar).Value
= Convert.ToString(personne_en_cours.get_Personnne_Prenom()) ;



command.CommandText = requete ;

command.CommandType = CommandType::Text ;

command.Connection = sqlconnection ;

command.ExecuteNonQuery() ;



-------------



Donc ma personne est bien ajouter, Ma table personne dès qu'elle recoit
un nouvelle enregistrement increment un colonne "id" de 1. Donc à la
fin de l'execution du code plus haut j'aurais dans ma table personne :



TABLE PERSONNE



ID | PRENOM



1 | jean claude



Ce que je voudrais en faite c'est juste après que le code plus haut
ce soit executé récupérer l'id créer automatiquement par sql server, en
l'occurence le "1". command.ExecuteNonQuery() renvoi juste le nombre de ligne concerné, donc ca ne va pas en faite.



Voila si qq avait une idée sur la question,



Par avance, merci.

7 réponses

bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
8 nov. 2005 à 14:01
Salut.. Si ton champ c'est un autoincrément (identity avec SQL Server)
tu fais select @@identity en fin de requête de sélection.

Si tu as une table TableTest qui contient 2 champs:
1) id (int) - identity
2) chaine (text)

tu fais

INSERT INTO TableTest
VALUES ('Toto')
SELECT @@IDENTITY

-------------------------
Trambert le vert MCP C#
3
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
8 nov. 2005 à 15:42
Il te retourne un object Decimal, et non pas un Int32

-------------------------
Trambert le vert
3
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
8 nov. 2005 à 14:17
Tout d'abord, merci de ta réponse.

Pour executer la requete j'ai le choix entre command.ExecuteNonQuery()
qui renvoi le nombre de ligne concerné donc il va tjs me renvoyer "1"
c'est pas interessant ou command.ExecuteReader() qui renvoi la ligne
concercné Donc Je choisi ExecuteReader() qui me renvoi bien une ligne
grace à ta méthode donc je fais :



SqlDataReader sqldatareader = command.ExecuteReader() ;






while
(sqldatareader->Read())

{








MessageBox::Show(Convert::ToString(sqldatareader->GetInt32(0))) ;



}



Et la il me sort "Une exception non gérée du type 'System.InvalidCastException' s'est produite dans system.data.dll"



Pourtant quand j'ai créer ma table personne j'ai bien mis



id INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
8 nov. 2005 à 15:15
Utilise ExecuteScalar qui te retourne le résultat de la première ligne, première colonne... Donc dans ton cas le @@identity

-------------------------
Trambert le vert
0

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

Posez votre question
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
8 nov. 2005 à 15:32
Ben meme en faisant ca, ca marche point si le type en provenance de la
base est un String pas de problème GetString(0) marche mais si c'est
une entier GetInt32(0) marche point, il me sort
System.InvalidCastException.
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
8 nov. 2005 à 15:39
Ben tu fais

object o = command.ExecuteScalar();

et tu regarde avec un break point de quel type est ton objet.

-------------------------
Trambert le vert
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
8 nov. 2005 à 16:10
ok, merci je vais faire ca
0
Rejoignez-nous