IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# MySql : condition if : l'enregistrement n'existe pas [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut C# MySql : condition if : l'enregistrement n'existe pas
    Bonjour,
    j'ai une table :
    nom prenom Statut
    toto TATA User
    momo MAMA Invit
    Je fais une requête MySql avec le nom, pour affecter ma variable 'statuts'
    Si l'enregistrement existe (nom = toto ou nom = momo), ma variable 'statuts' a la valeur de sa colonne
    donc soit 'User' soit 'Invit'

    Jusqu'au ici, tout va bien et tout marche sans problème, voici 2 versions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    MySqlCommand cmd = new MySqlCommand(sqlReq, connexion);
     
    MySqlDataReader donneReader = cmd.ExecuteReader();
     
    while (donneReader.Read())
    {
    	statuts_cherche = (string)donneReader["nom"];  // 1er version marche
     
    		if (statuts_cherche != null)
    		{
    			statuts = (string)donneReader["Statut"];
    		}
    		else
    		{
    			statuts = "futur";
     
    		}
     
    		// et voici 2e version aussi marche 
     
    		if (String.IsNullOrEmpty(statuts_cherche))
    		{
    			statuts = "futur";
    		}
    		else
    		{
    			statuts = (string)donneReader["Statut"];
     
    		}
     
     
    }
    Par contre, s'il l'enregistrement n'existe pas il faut que la variable 'statuts' a la valeur 'futur'
    Je n'arrive pas affecter la variable 'statuts' par 'futur' : vide sans valeur.

    J'ai aussi changé la condition avec plusieurs tentatives suivantes, mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	   if (statuts_cherche != " ")
    	   //...
     
    	   if (statuts_cherche != "")
    		 //...
     
    		if (statuts_cherche == String.Empty)
    		 //...
     
    		if (statuts_cherche == null)
    		 //...
     
    		if (String.IsNullOrEmpty(statuts_cherche))
    		 //...
     
    		if (string.IsNullOrEmpty(statuts_cherche) == true)
    		//...
    Que je dois faire ?

    Merci

  2. #2
    Membre chevronné Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    Salut,

    D'après ce que j'ai compris, tu cherches à savoir si un enregistrement existe ou non dans ta base, si oui tu laisses la ligne telle qu'elle est, sinon tu crées un nouveau utilisateur avec le statut futur.

    Tu as deux requêtes à réaliser :
    la première : tu fais le test si ton utilisateur existe ou non : SELECT IF( EXISTS( ta requête )) ça va te retourner un booléen.

    Si tu as 0 en retour, tu fais un INSERT avec le nouvel utilisateur + le statut futur.

  3. #3
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Bonjour Julien698,

    Mais je n'ai rien à enregistrer dans MySql... Je veux simplement affecter ma variable 'statuts' pour afficher sur l'écran...


    Si la personne existe dans ma table, je l'affiche son nom avec son statut sinon je vais mettre 'futur' comme son statut...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    tu as essayé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (string.IsNullOrEmpty(donneReader["nom"].toString()))
    {
               statuts = (string)donneReader["Statut"];                                
    }
    else
    {
           statuts = "futur";                              
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Bonjour laoho,

    J'ai essayé ton code
    Citation Envoyé par laoho Voir le message
    tu as essayé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (string.IsNullOrEmpty(donneReader["nom"].toString()))
    mais j'ai le message d'erreur :
    CS1061: 'object' ne contient pas une définition pour 'toString' et aucune méthode d'extension 'toString' acceptant un premier argument de type 'object' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)
    du coup, cela ne fonctionne pas du tout.

    merci

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Deja on peut noter un probleme de modelisation. Ta colonne "Status" devrait etre remplacee par une nouvelle table de reference, et tu devrais avoir une colonne "StatusId" qui pointe vers cette nouvelle table. C'est ce qu'on appelle la normalisation (voir ici : Bases de données relationnelles et normalisation : de la première à la sixième forme normale).

    Ensuite, je pense que tu dois tester avec la methode IsDbNull pour savoir si tu as un resultat ou non.

    PS: desole pour les fautes et le manque d'accents, je suis sur un clavier US.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insert si l'enregistrement n'existe pas deja
    Par Joel Pinto Ribeiro dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/12/2012, 13h45
  2. Réponses: 4
    Dernier message: 22/07/2009, 11h52
  3. Réponses: 5
    Dernier message: 15/12/2008, 16h23
  4. Réponses: 1
    Dernier message: 12/02/2008, 17h00
  5. Réponses: 3
    Dernier message: 25/01/2008, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo