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 :

Problème requête SQL paramétrée [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème requête SQL paramétrée
    Bonjour,

    Je débute en VB.NET et je rencontre un soucis en construisant une requête paramétrée, avec OleDb.
    Voici mon 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
    For Each row As DataRow In MyDataTableServer.Rows()
                    Try
                        sql = "INSERT INTO schedule(tstart, press, part) VALUES (@v1, @v2, @v3)"
                        MyCommandLocal.CommandText = sql
                        MyCommandLocal.Parameters.Add(New OleDbParameter("@v1", row("tstart")))
                        MyCommandLocal.Parameters.Add(New OleDbParameter("@v2", row("press")))
                        MyCommandLocal.Parameters.Add(New OleDbParameter("@v3", row("part")))
                        MyCommandLocal.ExecuteNonQuery()
                    Catch ex As Exception
                        If ex.HResult = -2146232060 Then
                            Console.WriteLine("Doublons, ligne non insérée.")
                        Else
                            Console.WriteLine(ex)
                        End If
                    End Try
                Next
    La première itération marche bien, l'insertion se fait. Mais les suivantes ne fonctionnent pas, l'exception doublons est levée.
    Suis-je passé à coté d'un détail ?

    Merci d'avance pour votre aide !

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Solution bête
    Bonjour,

    En recherchant un petit peu mieux (ne me tapez pas...) j'ai trouvé la solution !
    Il suffisait de faire un parameters.clear() à chaque fin d'itération.
    Question bête, réponse bête !

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Sinon tu peux ajouter les paramètres avant la boucle, et juste changer leur valeur dans la boucle :

    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
    sql = "INSERT INTO schedule(tstart, press, part) VALUES (@v1, @v2, @v3)"
    MyCommandLocal.CommandText = sql
    MyCommandLocal.Parameters.Add(New OleDbParameter("@v1",  OleDbType.Integer)) ' TODO : mettre les vrais types...
    MyCommandLocal.Parameters.Add(New OleDbParameter("@v2",  OleDbType.String))
    MyCommandLocal.Parameters.Add(New OleDbParameter("@v3",  OleDbType.Double))
     
    For Each row As DataRow In MyDataTableServer.Rows()
        Try
            MyCommandLocal.Parameters("v1").Value = row("tstart")
            MyCommandLocal.Parameters("v2").Value = row("press")
            MyCommandLocal.Parameters("v3").Value = row("part")
            MyCommandLocal.ExecuteNonQuery()
        Catch ex As Exception
            If ex.HResult = -2146232060 Then
                Console.WriteLine("Doublons, ligne non insérée.")
            Else
                Console.WriteLine(ex)
            End If
        End Try
    Next

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En effet, c'est un peu plus propre comme ça.
    Merci pour ta réponse !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/08/2011, 14h04
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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