Combobox

Signaler
Messages postés
18
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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.
Messages postés
18
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009

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();
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

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.
Messages postés
18
Date d'inscription
lundi 9 mars 2009
Statut
Membre
Dernière intervention
15 avril 2009

ok et merci beaucoup
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
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
*/