none
Requete SQL RRS feed

  • Question

  • Bonjour à tous,

    Comment savoir si une requête SQL est réussie?

    Je m'explique.

    Dans mon programme je dois faire des enregistrements, si le membre existe il faut que je
    fasse un UPDATE, si non un INSERT.

    Voilà mon code actuel.

             Ecrire = True

             Try

                Sql = "SELECT * FROM Tbl_Points WHERE (Point_Membre = '" & Nom & "') AND (Point_Mois = " & Mois & ") AND (Point_Saison = '" & Saison & "')"

                Call Executer_Sql()

                Sql = "UPDATE Tbl_Points "

                Sql &= "SET Point_Mois = " & Mois & ", "

                Sql &= "Point_Membre = '" & Nom & "', "

                Sql &= "Point_PointsImage1 = " & P1 & ", "

                Sql &= "Point_PointsImage2 = " & P2 & ", "

                Sql &= "Point_PointsImage3 = " & P3 & ", "

                Sql &= "Point_PointsImage4 = " & P4 & ", "

                Sql &= "Point_PointsImage5 = " & P5 & ", "

                Sql &= "Point_Saison = '" & Saison & "', "

                Sql &= "Point_Clef = '" & Clef & "' "

                Sql &= "WHERE (Point_Membre = '" & Nom & "') AND (Point_Mois = " & Mois & ") AND (Point_Saison = '" & Saison & "')"

                Call Executer_Sql()

             Catch ex As Exception

                Sql = "INSERT INTO Tbl_Points "

                Sql &= "(Point_Mois = " & Mois & ", "

                Sql &= "Point_Membre ='" & Nom & "', "

                Sql &= "Point_PointsImage1 =" & P1 & ", "

                Sql &= "Point_PointsImage2 =" & P2 & ", "

                Sql &= "Point_PointsImage3 =" & P3 & ", "

                Sql &= "Point_PointsImage4 =" & P4 & ", "

                Sql &= "Point_PointsImage5 =" & P5 & ", "

                Sql &= "Point_Saison = '" & Saison & "', "

                Sql &= "Point_Clef = '" & Clef & "')"

                Sql &= "VALUE (" & Mois & ", '" & Nom & "', " & P1 & ", " & P2 & ", " & P3 & ", " & P4 & ", " & P5 & ", '" & Saison & "')"

                Call Executer_Sql()

             End Try

             Ecrire = False

       Sub Executer_Sql()

          Try

             Connection.Close()

          Catch ex As Exception

          End Try

          Command_Sql = Connection.CreateCommand()

          Command_Sql.CommandText = Sql

          Connection.Open()

          If Ecrire = False Then

             Data_Reader = Command_Sql.ExecuteReader()

          Else

             Data_Writer = Command_Sql.ExecuteScalar()

          End If

       End Sub

    Actuellement, ma requête SELECT est toujours valide, c'est à dire même si elle ne trouve pas
    le membre, l'UPDATE se fait.

    Comment savoir si elle ne trouve pas le membre?

    Merci de votre aide

    Cordialement

    Salva


    • Modifié sa56 vendredi 8 novembre 2013 10:02
    vendredi 8 novembre 2013 10:01

Réponses

  • Bonjour,

    Au sein d'un bloc Try,

    1) Ouvrir la connexion et définir la requête d'update

    2) Exécuter la requête via ExecuteNonQuery et récupérer la valeur de retour (int : indiquant le nombre de lignes mises à jour)

    3) si cette valeur est 0, votre update n'a pas eu lieu et vous devez insérer un nouveau record en préparant la requete d'insert et en l'executant via ExecuteNonQuery (remarquez que si l'update s'est fait, vous n'aurez utilisé qu'une seule requête, le select n'est pas nécessaire)

    Au sein d'un bloc catch, gérer une exception éventuelle

    Au sein d'un block Finally, fermer votre connexion qui est restée ouverte jusqu'à présent.

    • Marqué comme réponse Aurel Bera jeudi 14 novembre 2013 07:25
    vendredi 8 novembre 2013 10:37

Toutes les réponses

  • Bonjour,

    Au sein d'un bloc Try,

    1) Ouvrir la connexion et définir la requête d'update

    2) Exécuter la requête via ExecuteNonQuery et récupérer la valeur de retour (int : indiquant le nombre de lignes mises à jour)

    3) si cette valeur est 0, votre update n'a pas eu lieu et vous devez insérer un nouveau record en préparant la requete d'insert et en l'executant via ExecuteNonQuery (remarquez que si l'update s'est fait, vous n'aurez utilisé qu'une seule requête, le select n'est pas nécessaire)

    Au sein d'un bloc catch, gérer une exception éventuelle

    Au sein d'un block Finally, fermer votre connexion qui est restée ouverte jusqu'à présent.

    • Marqué comme réponse Aurel Bera jeudi 14 novembre 2013 07:25
    vendredi 8 novembre 2013 10:37
  • Bonjour

    Un petit retour?

    Merci!

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 11 novembre 2013 11:27
  • Bonjour,

    Merci la reponse, c'est bien ce qu'il me falais !!

    Merci encore et a bientot

    Cordialement

    Salva

    jeudi 14 novembre 2013 07:24
  • Bonjour,

    Un peu vieux comme post, mais bon pour le fun...

    Je pense que vous pouvez utiliser la fonction merge pour ça c'est fait pour, en une requête au lieu de deux

    vendredi 15 juillet 2016 15:54