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 :

Insertion données sous VB Express dans des champs de clés étrangères


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Insertion données sous VB Express dans des champs de clés étrangères
    Bonjour,

    Avant d'exposer mon problème, je voudrai juste m'assurer que la syntaxe de ma requête SQL est bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Dim strSQLConn As String = "INSERT into [Se connecter](NumUtilisateur, IP) VALUES('" & _
                    CleConnUtil & "','" & strIP & "');"
    Si quelqu'un peut me donner une réponse, ce sera sympas.

    Harry Potter

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,
    J'ai l'impression que NumUtilisateur est un numérique et que les cotes entourant CleConnUtil sont donc indésirables, mais sinon c'est bon.
    Je penche, donc je suis

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut Chrifo, et merci pour ta réponse,

    NumUtilisateur est effectivement un numérique, comme je l'ai mis en int(entier).

    J'essaye donc d'enlever les cotes pour voir...

    Harry Potter

  4. #4
    Invité
    Invité(e)
    Par défaut
    ... Arf non, il n'aime toujours pas la situation. Lorsque je testes l'insertion, il me met toujours ce message d'erreur :

    "L'instruction INSERT est en conflit avec la contrainte FOREIGN KEY "FK_Se connecter_UTILISATEUR". Le conflit s'est produit dans la base de données "D:\....MDF", table "dbo.UTILISATEUR", column 'numutilisateur'.
    L'instruction a été arrêtée."

    UTILISATEUR est une table, Se connecter en est une autre. Se connecter fait le lien entre deux tables : UTILISATEUR et IP.

    Harry Potter

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu devrais aussi songer à utiliser des paramètres SQL plutot que de concaténer les valeurs dans le corps de la requête.

    http://webman.developpez.com/article.../sqlparameter/
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait, pour le moment ça ne marche même pas. Donc je voudrai plutôt d'abord essayer de résoudre ce problème.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Voici aussi mon code qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            cnSQL.open()
            Dim strSQL As String = "INSERT into [Se connecter](NumUtilisateur, IP) VALUES(1,'test');"
            Dim cmSQL As New SqlCommand(strSQL, cnSQL)
     
            cmSQL.ExecuteNonQuery()
     
            cnSQL.close()
     
            MsgBox("Opération effectuée", MsgBoxStyle.Information, "ok")
    Cela me renvoie le message d'erreur que j'ai indiqué plus haut.

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    C'est jamais une bonne idée les espaces dans les noms de table... Regarde de ce côté là.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui c'est ce que j'ai pensé aussi. Mais j'ai essayé avec une autre table qui ne comporte pas d'espace, mais toujours le même problème.

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est bon j'ai résolu le problème. En fait, je déclarais ma requête d'insertion en utilisant une variable avant que je n'affectes une valeur à cette variable.

    La déclaration de ma requête étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Dim strSQLConn As String = "INSERT into SeConnecter(NumUtilisateur, IP) VALUES(" & CleConnUtil & ",'" & strIP & "');"
    J'assignais une valeur à CleConnUtil après cette ligne au lieu de le faire avant.

    Par contre, j'ai encore un autre problème qui est survenu après la résolution de celui-ci, mais ça c'est une autre histoire... ( Un train peut en cacher un autre)

    Harry Potter

  11. #11
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Si tu avais utilisé des paramètres SQL comme je te l'avais suggéré, tu n'aurais pas eu le problème...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/08/2010, 00h46
  2. insertion des donnée sous oracle express
    Par restart dans le forum Débuter
    Réponses: 8
    Dernier message: 28/11/2009, 22h18
  3. Réponses: 2
    Dernier message: 03/02/2009, 22h12
  4. Insert dans des champs INT avec des doubles quotes
    Par bannik dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/04/2008, 17h44
  5. Réponses: 5
    Dernier message: 27/06/2007, 17h08

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