none
C# si la valeur de OledbDataReader est null ou pas RRS feed

  • Question

  • Bonjour voici un code qui recherche dans une base de données Access la présence (ou non) d'une valeur entrée dans un TextBox.

    Si cette valeur est présente le code retourne bien le MessageBox d'erreur. Par contre si aucune données n'est trouvée dans la base, le bloc "Else" (quelque soit le code insérer à l'intérieur) est occulté est l'instruction se termine.

    merci de votre aide.

      #region Check If Groupement Exists
                string groupement = Convert.ToString(GroupTxtBox.Text);
                string queryCheck = ($"SELECT FOU_NAME FROM [FOURNISSEURS] WHERE FOU_NAME='{groupement}'");
                comm = new OleDbCommand(queryCheck, conn);
                conn.Open();
                using(OleDbDataReader reader = comm.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        /*Si le nom saisi dans la textbox exist dans la base :*/
                        if (reader!=null)
                        {
                            Messages.ErrorMessages("Ce Groupement existe déjà !");
                            GroupTxtBox.Text = string.Empty;
                            GroupTxtBox.Focus();
                        }
                        /*Si le nom saisi n'existe pas dans la base : */
                        else
                        {
                            // Code...
                        }
                    }
                }
                
                #endregion


    JF Collombet ® CreateSpecificCulture

    mardi 10 juillet 2018 16:12

Réponses

  • Bonjour, 

    Vous avez changé la place de "if" et "while" dans ce dernier code. Est-ce que le code marche en utilisant premièrement "if" et puis "while" comme dans l'exemple que j'ai donné?

    Cordialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 12 juillet 2018 06:31
    Modérateur

Toutes les réponses

  • Bonjour Jean-François,

    Il n'est pas nécessaire de vérifier si la variable reader est null. Il suffit de procéder d'après la valeur retournée par la méthode OleDbDataReader.Read :

    using(OleDbDataReader reader = comm.ExecuteReader())
                {
                    bool b = reader.Read();
                    if(b)
                        /*Si le nom saisi dans la textbox existe dans la base :*/
                        while(b)
                        {
                            Messages.ErrorMessages("Ce Groupement existe déjà !");
                            GroupTxtBox.Text = string.Empty;
                            GroupTxtBox.Focus();
                            b = reader.Read();
                        }
                        /*Si le nom saisi n'existe pas dans la base : */
                        else
                        {
                            Messages.ErrorMessages("Ce Groupement n'existe pas !");
                        }
                   }
    

    Cordialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 11 juillet 2018 13:37
    Modérateur
  • Bonjour et merci pour votre réponse. Voici mon code réadapté. malheureusement même si les données n'existent pas dans ma base, le bloc else est toujours ignoré.

     private void ValidGroupBtn_Click(object sender, RoutedEventArgs e)
            {
                string groupement = Convert.ToString(GroupTxtBox.Text);
                string queryCheck = ($"SELECT FOU_NAME FROM [FOURNISSEURS] WHERE FOU_NAME='{groupement}'");
                comm = new OleDbCommand(queryCheck, conn);
                conn.Open();
                using(OleDbDataReader reader = comm.ExecuteReader())
                {
                    bool b = reader.Read();
                    while (b)
                    {
                        /*Si le nom saisi dans la textbox exist dans la base :*/
                        if (b)
                        {
                            Messages.ErrorMessages("Ce Groupement existe déjà !");
                            GroupTxtBox.Text = string.Empty;
                            GroupTxtBox.Focus();
                            conn.Close();
                            break;
                        }
                        /*Si le nom saisi n'existe pas dans la base : */
                        else
                        {
                            comm = new OleDbCommand("INSERT INTO [FOURNISSEURS] ([FOU_NAME]) VALUES (@FOU_NAME)", conn);
                            comm.Parameters.AddWithValue("FOU_NAME", Convert.ToString(GroupTxtBox.Text));
                            conn.Open();
                            comm.ExecuteNonQuery();
                            conn.Close();
                            Messages.InformationMessage("Groupement ajouté avec succès.");
                        }
                    }
                }
    
            }


    JF Collombet ® CreateSpecificCulture

    jeudi 12 juillet 2018 02:47
  • Bonjour, 

    Vous avez changé la place de "if" et "while" dans ce dernier code. Est-ce que le code marche en utilisant premièrement "if" et puis "while" comme dans l'exemple que j'ai donné?

    Cordialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 12 juillet 2018 06:31
    Modérateur