Combobox

teksakina Messages postés 18 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 15 avril 2009 - 24 mars 2009 à 13:02
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 28 mars 2009 à 21:12
salut tout le monde
je voudrais afficher les informations d'un personnel  dans des textbox en choisissant son id à partir d'un combobox
language utilisé c'est c# et la bd est sqlserver.
et voila mon code qui ne marche pas:

SqlCommand comd2 =
new
SqlCommand(
"select id_personel,pwd,nom,prenom,cin,adresse,t‚l‚,type_personnel from personnel where id_personel='"+ @Convert .ToString ( comboBox1 .SelectedItem ) +
"'", connexion);

try{

SqlDataReader rd1;
rd1 = comd2.ExecuteReader();
rd1.Read();
textBox2.Text = rd1.GetInt32(1).ToString();
textBox3.Text = rd1.GetString(2);
textBox4.Text = rd1.GetString(3);textBox5.Text rd1.GetString(4);textBox6.Text rd1.GetInt32(5).ToString();

textBox7.Text = rd1.GetString(6);

textBox8.Text = rd1.GetString(7);

rd1.Close();

}

5 réponses

maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
24 mars 2009 à 14:30
Salut,

Peux-tu nous dire où il y a une erreur ainsi que le message. Sans quoi c'est difficile de débugger.
Voici une liste non exhaustive de problèmes :
- Est-ce que la connexion est bien ouverte?
- Y a-t-il un enrgistrement correspondant au critère de recherche?
- Problème de gestion de valeur null?
...

Sinon, à première vue, je vois dans le sqlCommand qu'il y a deux virgules qui se suivent dans le select.
0
teksakina Messages postés 18 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 15 avril 2009
24 mars 2009 à 15:33
voila le message d'erreur:
System.InvalidOperationException: Tentative non valide de lecture lorsque aucune donnée n'est présente.
   à System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout)
   à System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
   à homologation2.ajoutpersonel.comboBox1_SelectedIndexChanged(Object sender, EventArgs e) dans C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\homologation2\homologation2\ajoutpersonel.cs:ligne 194

ligne 194:


textBox2.Text = rd1.GetInt32(1).ToString();
0
maladebe Messages postés 18 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 27 mars 2009
24 mars 2009 à 16:09
Attention, les indices commencent à 0.
Essaie : 
   textBox2.Text = rd1.GetInt32(0).ToString();
Tu peux aussi utiliser le nom de la colonne :
   textBox2.Text = rd1.GetInt32("id_personel").ToString();

Remarques :
1° La méthode DataReader.Read() renvoie un booléen, alors il faut en profiter
if(rd1.Read())
{
//Remplissage des textbox
}
else
{
//Que faire s'il n'y a pas d'enregistrements???
}

2° Tester pour chaque champ s'il n'est pas null. Voir la fonction IsDbNull(param) dans la msdn car je ne connais plus la syntaxe exacte.
0
teksakina Messages postés 18 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 15 avril 2009
24 mars 2009 à 16:44
ok et merci beaucoup
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 mars 2009 à 21:12
Salut,


A compléter par une lecture de ceci : http://blogs.codes-sources.com/coq/archive/2008/07/05/l-injection-sql-n-est-pas-un-probl-me-que-pour-les-d-veloppeurs-web.aspx
Et donc un approfondissement du sujet requête paramétrées.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous