dork_maule
Messages postés22Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention29 mars 2008
-
28 nov. 2007 à 01:11
dork_maule
Messages postés22Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention29 mars 2008
-
28 nov. 2007 à 12:50
Bonsoir a tous.
Pouvez-vous m'aider car je suis un probléme qui m'empéche d'avancé depuis une bonne partie de la journée.
J'ai mis en place une requete sql qui fonctionne correctement sur la base de donnée et j'aimerais convertir le résultat en int dans mon dévellopement d'un fichier cs de vb.net.
Code du sqldatareader :
select count(*)
from utili
Comme réponse il me retourne 2 se qui est exacte.
Code du fichier cs :
int cont;
SqlCommand commande = UsinePrincipal.Usine.PremVerif; //Ceci fonctionne correctement
SqlDataReader réponse = commande.Executereader(); //Ceci fonctionne
cont = /*Comment faire la convetion du SqlDataReader en int? */
J'ai un peu fouillé sur divers forum et site internet mais aucune solution ne fontionne et mon cont ne reçoit pas la convertion.
Pouvez-vous m'aider a régler se probléme?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 nov. 2007 à 08:58
En C#, tu récupère directement ta valeur en lisant le champ correspondant du DataReader, ici le 0 puis le premier et le seul. --> cont= réponse[0]
Astuce : Lorsque que tu n'as qu'une seule valeur sur un seul champ à récupérer (comme ici sur une requette Count() ) plutot que d'utiliser un DataReader, tu peux utiliser la methode ExecuteScalar à la place de ExecuteReader. ExecuteScalar te renvoie la première colonne de la première ligne quelque soit le nombre de champs et d'enregistrement lus en bdd, ce qui correspond tout à fait au résultat d'une requette Count()
dork_maule
Messages postés22Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention29 mars 2008 28 nov. 2007 à 12:50
Merci Casy ^^
cont = réponse[0] n'a pas marché mais ExecuteScalar me donne parfaitement le résultat que je voulais.
Voici la correction pour ceux que sa peut intérrésser :
On vire : SqlDataReader réponse = commande.ExecuteReader();
et on le remplace par :
cont = Convert.ToInt32(commande.ExecuteScalar());