MySql et C# - Existance d'une donnée dans une table

skyline86 Messages postés 29 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 5 décembre 2009 - 17 déc. 2008 à 15:06
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Derniè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.

Merci d'avance

3 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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.

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_mahmoud85 Messages postés 2 Date d'inscription samedi 17 juillet 2010 Statut Membre Dernière intervention 19 avril 2011
19 avril 2011 à 09:07
thank u ,,,
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
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.

bon code
0
Rejoignez-nous