MySql et C# - Existance d'une donnée dans une table
skyline86
Messages postés29Date d'inscriptionmardi 21 octobre 2008StatutMembreDernière intervention 5 décembre 2009
-
17 déc. 2008 à 15:06
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
19 avril 2011 à 09:13
Bonjour, je commence le développement en C# et j'ai un petit problème.
J'ai une table "bus" avec des bus.
je cherche a tester la présence d'un bus dans la table et si il n'y en a pas alors je l'insert
Dans mon code c# je fais :
requete "SELECT id_bus FROM bus WHERE imei 123456"
MySqlCommand maCommande = new MySqlCommand(requete, maConnexion);
int idBus = (int)maCommande.ExecuteScalar();
et ensuite
if ((idBus "") || (idBus null))
{
// alors je fais une requete d'insertion afin de créer le bus dans la table bus
}
Mais problème cela me fais une erreur et je n'arrive pas a la résoudre. Je pense que le test (si n'existe pas) ne fonctionne pas.
Est ce que quelqu'un peut m'aider s'il vous plait.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 déc. 2008 à 13:41
Salut,
Quelle est l'erreur au juste ? A la compilation ou à l'exécution ?
On ne peut pas deviner ce genre de détails.
A vue de nez je dirais à la compilation et sur if ((idBus "") || (idBus null))
vu q'une variable typée int n'a pas la moindre chance d'être une chaîne vide ou une référence nulle.
Mais normalement les messages du compilateur sont plutôt clairs.
De toute façon à l'exécution ça ne passerais pas non plus dans le cas d'un bus inexistant vu que l'appel à ExecuteScalar devrait normalement fournir une référence nulle.
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 19 avril 2011 à 09:13
Salut,
si tu veux juste savoir si l'imei est dans ta base je te conseille de faire un COUNT(*), ainsi pas besoin de tester si le résultat est différent de DBNull.Value (ou de risque de plantage sur ton transtypage en int), tu auras toujours un entier en sortie. Te restera alors à vérifier que ce nombre est supérieur à zéro.