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

VB.NET Discussion :

souci de vérification avant l'insertion


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut souci de vérification avant l'insertion
    bonjour, je rencontre un petit souci au niveau de la vérification deux la présence de 2 champs avant de faire une insertion dans la base de données MySQL.
    les 2 messages d'erreur s'affiche parfaitement mais l'insertion ne passe pas, ça mouline sans faire le traitement demandé. ci-joint le code
    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
    33
    34
    35
     
    Dim resultat As String
     
            Dim cmd As New MySqlCommand
            Dim da As New MySqlDataAdapter
            Dim dt As New DataTable
            Try
                'début du test, si les zonnes de text sont vide, faire
                If TextBoxTitreLivre.Text = "" Or TextBoxNomAuteur.Text = "" Or TextBoxNumGenre.Text = "" Then
                    MsgBox("case vide !!!", MsgBoxStyle.Information)
                Else
                    'ouverture de la connexion
                    connexion.Open()
                    'contenir les données
                    With cmd
                        .Connection = connexion
                        .CommandText = "select titrelivre, auteurlivre from bibliotheques where titrelivre='" & TextBoxTitreLivre.Text & "' and auteurlivre='" & TextBoxNomAuteur.Text & "'"
                        'éxecution 
                        resultat = cmd.ExecuteNonQuery
                        ' si l'indo existe déjà dans la base de données
                        If resultat = 0 Then
                            MsgBox("record exists", MsgBoxStyle.Information)
                            connexion.Close()
                        Else
                            ajout("insert into bibliotheques (titrelivre, genre, auteurlivre, dateEntre, numenregistrement, nbrpartie, infopublication, source, etagere, edition) values('" & TextBoxTitreLivre.Text.ToString & "', '" & TextBoxNumGenre.Text.ToString & "', '" & TextBoxNomAuteur.Text.ToString & "', '" & TextBoxDateEntree.Text.ToString & "', '" & TextBoxNumEnregistrement.Text.ToString & "', '" & TextBoxNbPartie.Text.ToString & "', '" & TextBoxInfoPublication.Text.ToString & "', '" & TextBoxSource.Text.ToString & "', '" & TextBoxEtagere.Text.ToString & "', '" & TextBoxEdition.Text.ToString & "')")
                            connexion.Close()
                            Me.Hide()
                            Form1.Show()
                        End If
                    End With
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    bonjour,

    Montre nous l'erreur (dans quelle ligne l'exception se déclenche).
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par maradona_9 Voir le message
    bonjour,

    Montre nous l'erreur (dans quelle ligne l'exception se déclenche).
    Aucune exception n'est déclenchée. ça mouline sans rien ajouter à la base de données
    PS: l'ajout se fait sans le moindre souci si j'enlève la condition de vérification avant une insertion.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Je veux dire, que si j'insert "titrelivre" et "auteurlivre" sans faire une vérification de leur existence dans la base de données, le sql d'ajout passe, mais si je laisse le test de vérification eh bien l'ajout ne passe pas et je n'arrive pas à savoir pourquoi. j'en ai aucune idée.

  5. #5
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Bonjour,
    - Les bonnes pratiques recommandent l'utilisation des requêtes paramétrées par exécuter ses instructions sql. De plus, tu bénéficies de plus de sécurité contre les attaques de type injection SQL.

    - Attention aux espaces aux début et à la fin dans les valeurs de tes textbox. Tu peux utiliser la fonction Trim à cet effet.

    - Fait un débogage pas à pas pour voir le comportement de ton code.
    N'oubliez pas le tag et

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ca pourrait aussi être utile d'avoir le code de la fonction/procédure "ajout" qui reçoit une requête sql en paramètre.
    Kropernic

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    bonjour,

    Essaye ça si ça marche je t'explique .
    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
    33
    34
    Dim resultat As SqlDataReader
     
            Dim cmd As New MySqlCommand
            Dim da As New MySqlDataAdapter
            Dim dt As New DataTable
            Try
                'début du test, si les zonnes de text sont vide, faire
                If TextBoxTitreLivre.Text = "" Or TextBoxNomAuteur.Text = "" Or TextBoxNumGenre.Text = "" Then
                    MsgBox("case vide !!!", MsgBoxStyle.Information)
                Else
                    'ouverture de la connexion
                    connexion.Open()
                    'contenir les données
                    With cmd
                        .Connection = connexion
                        .CommandText = "select titrelivre, auteurlivre from bibliotheques where titrelivre='" & TextBoxTitreLivre.Text & "' and auteurlivre='" & TextBoxNomAuteur.Text & "'"
                        'éxecution 
                        resultat = cmd.ExecuteReader
                        ' si l'indo existe déjà dans la base de données
                        If resultat.HasRows Then
                            MsgBox("record exists", MsgBoxStyle.Information)
                            connexion.Close()
                        Else
                            ajout("insert into bibliotheques (titrelivre, genre, auteurlivre, dateEntre, numenregistrement, nbrpartie, infopublication, source, etagere, edition) values('" & TextBoxTitreLivre.Text.ToString & "', '" & TextBoxNumGenre.Text.ToString & "', '" & TextBoxNomAuteur.Text.ToString & "', '" & TextBoxDateEntree.Text.ToString & "', '" & TextBoxNumEnregistrement.Text.ToString & "', '" & TextBoxNbPartie.Text.ToString & "', '" & TextBoxInfoPublication.Text.ToString & "', '" & TextBoxSource.Text.ToString & "', '" & TextBoxEtagere.Text.ToString & "', '" & TextBoxEdition.Text.ToString & "')")
                            connexion.Close()
                            Me.Hide()
                            Form1.Show()
                        End If
                    End With
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Ca pourrait aussi être utile d'avoir le code de la fonction/procédure "ajout" qui reçoit une requête sql en paramètre.
    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
     
    Public Sub ajout(ByVal sql As String)
            Try
                'ouverture de la connexion
                connexion.Open()
                'contenir les données
                With cmd
                    .Connection = connexion
                    .CommandText = sql
                    'éxecution 
                    resultat = cmd.ExecuteNonQuery
                    If resultat = 0 Then
                        MsgBox("pas d'enregistrement", MsgBoxStyle.Information)
                    Else
                        MsgBox("enregistrement OK")
                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            connexion.Close()
        End Sub

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    toujours pas d'enregistrement.
    PS: j'utilise Mysql, SqlDataReader redevient mysqldatareader
    Citation Envoyé par maradona_9 Voir le message
    bonjour,

    Essaye ça si ça marche je t'explique .
    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
    33
    34
    Dim resultat As SqlDataReader
     
            Dim cmd As New MySqlCommand
            Dim da As New MySqlDataAdapter
            Dim dt As New DataTable
            Try
                'début du test, si les zonnes de text sont vide, faire
                If TextBoxTitreLivre.Text = "" Or TextBoxNomAuteur.Text = "" Or TextBoxNumGenre.Text = "" Then
                    MsgBox("case vide !!!", MsgBoxStyle.Information)
                Else
                    'ouverture de la connexion
                    connexion.Open()
                    'contenir les données
                    With cmd
                        .Connection = connexion
                        .CommandText = "select titrelivre, auteurlivre from bibliotheques where titrelivre='" & TextBoxTitreLivre.Text & "' and auteurlivre='" & TextBoxNomAuteur.Text & "'"
                        'éxecution 
                        resultat = cmd.ExecuteReader
                        ' si l'indo existe déjà dans la base de données
                        If resultat.HasRows Then
                            MsgBox("record exists", MsgBoxStyle.Information)
                            connexion.Close()
                        Else
                            ajout("insert into bibliotheques (titrelivre, genre, auteurlivre, dateEntre, numenregistrement, nbrpartie, infopublication, source, etagere, edition) values('" & TextBoxTitreLivre.Text.ToString & "', '" & TextBoxNumGenre.Text.ToString & "', '" & TextBoxNomAuteur.Text.ToString & "', '" & TextBoxDateEntree.Text.ToString & "', '" & TextBoxNumEnregistrement.Text.ToString & "', '" & TextBoxNbPartie.Text.ToString & "', '" & TextBoxInfoPublication.Text.ToString & "', '" & TextBoxSource.Text.ToString & "', '" & TextBoxEtagere.Text.ToString & "', '" & TextBoxEdition.Text.ToString & "')")
                            connexion.Close()
                            Me.Hide()
                            Form1.Show()
                        End If
                    End With
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    ok ça marche, peux-tu stp m'expliquer le code et merci.
    Citation Envoyé par maradona_9 Voir le message
    bonjour,

    Essaye ça si ça marche je t'explique .
    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
    33
    34
    Dim resultat As SqlDataReader
     
            Dim cmd As New MySqlCommand
            Dim da As New MySqlDataAdapter
            Dim dt As New DataTable
            Try
                'début du test, si les zonnes de text sont vide, faire
                If TextBoxTitreLivre.Text = "" Or TextBoxNomAuteur.Text = "" Or TextBoxNumGenre.Text = "" Then
                    MsgBox("case vide !!!", MsgBoxStyle.Information)
                Else
                    'ouverture de la connexion
                    connexion.Open()
                    'contenir les données
                    With cmd
                        .Connection = connexion
                        .CommandText = "select titrelivre, auteurlivre from bibliotheques where titrelivre='" & TextBoxTitreLivre.Text & "' and auteurlivre='" & TextBoxNomAuteur.Text & "'"
                        'éxecution 
                        resultat = cmd.ExecuteReader
                        ' si l'indo existe déjà dans la base de données
                        If resultat.HasRows Then
                            MsgBox("record exists", MsgBoxStyle.Information)
                            connexion.Close()
                        Else
                            ajout("insert into bibliotheques (titrelivre, genre, auteurlivre, dateEntre, numenregistrement, nbrpartie, infopublication, source, etagere, edition) values('" & TextBoxTitreLivre.Text.ToString & "', '" & TextBoxNumGenre.Text.ToString & "', '" & TextBoxNomAuteur.Text.ToString & "', '" & TextBoxDateEntree.Text.ToString & "', '" & TextBoxNumEnregistrement.Text.ToString & "', '" & TextBoxNbPartie.Text.ToString & "', '" & TextBoxInfoPublication.Text.ToString & "', '" & TextBoxSource.Text.ToString & "', '" & TextBoxEtagere.Text.ToString & "', '" & TextBoxEdition.Text.ToString & "')")
                            connexion.Close()
                            Me.Hide()
                            Form1.Show()
                        End If
                    End With
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    ok

    ton probléme c'était au niveau de ExecuteNonQuery car on l'a utilise que lorsque nous voulons savoir le nombre des lignes affectées par les requêtes Update, Insert et Delete PAS SELECT.
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 123
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par maradona_9 Voir le message
    ok

    ton probléme c'était au niveau de ExecuteNonQuery car on l'a utilise que lorsque nous voulons savoir le nombre des lignes affectées par les requêtes Update, Insert et Delete PAS SELECT.
    Je comprends, merci

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

Discussions similaires

  1. [MySQL] Petit soucis convertion date lors d'insertion
    Par obito dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/02/2009, 15h48
  2. champ text pré rempli , vérification avant envoi bloque
    Par remrem59 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/09/2008, 12h38
  3. soucis avec une requète d'insertion
    Par veriecherie dans le forum ASP
    Réponses: 8
    Dernier message: 05/08/2008, 11h11
  4. [MySQL] Vérifier l'existance d'une entrée avant l'insertion dans une BD
    Par mitchb dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/02/2008, 13h30
  5. Vérification avant l'envoi de formulaire
    Par navis84 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 10/05/2006, 14h01

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