Meilleur auteur de réponses
Requete SQL

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
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
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
-
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. -
-