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

Accès aux données Discussion :

Code requete INSERT impossible VB2005


Sujet :

Accès aux données

  1. #1
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut Code requete INSERT impossible VB2005
    Bonsoir,

    Je débute sur VB 2005 express et je n'arrive psa à faire une insertion de donnée dans ma base.

    Voici le code que j'ai écris :



    Imports System.Data.SqlClient

    Module Mes_fonctions

    'Nom de ma base de donnée
    Private fichier_bdd As String = "bddfilm"

    'Requête d'insertion d'un film
    Private SQL_Insert As String = "INSERT INTO film (titre) VALUES ('Matrix')"


    Public Sub connexion()

    'Création d'une connection
    Dim connection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\" & fichier_bdd & ".mdf;Integrated Security=True;User Instance=True")

    'Ouverture de la base de donnée
    connection.Open()

    Dim cmd As SqlCommand = New SqlCommand(SQL_Insert, connection)

    'Exécution de la requête SQL
    cmd.ExecuteNonQuery()

    'Fermeture de la base de donnée
    connection.Close()

    End Sub

    End Module


    Voilà, lorsque j'exécute ce code aucune erreur n'est signalée, cependant dans ma base de donnée aucune ligne n'a été insérée.

    J'ai copié ma requête dans le query analyser afin de voir si je n'avais pas fait d'erreur et effectivement elle est correcte puisqu'une ligne dans ma table a été créée.

    J'ai inséré un bloc try catch finally et aucune erreur n'est détectée.

    Pouvez-vous me dire 'il y a une erreur dans mon code qui ferait qu'il ne fonctionne pas.

    Merci.

  2. #2
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut Aidez-moi svp
    Personne ne peux m'aider à résoudre mon problème ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 89
    Points
    89
    Par défaut
    À la place d'ouvrir ta connexion en dehors du SqlCommand, essaie de faire un cmd.Connection.Open() avant de faire ton ExecuteNonQuery.

  4. #4
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut La connexion est déjà ouverte
    Bonsoir,

    Tout d'abord, Zyth, je te remercie de m'avoir répondu.

    J'ai insérer un cmd.connection.open() juste avant le executenoquery mais j'ai un message d'erreur quand j'exécute le programme en me disant que la connection est déjà ouverte.

    Est-ce que mon code selon toi est correct.

    Pour info. je n'ai pas créer de dataset, est-ce que ça pourrait venir de là ?

    Sinon, le mieux pour gérer une base de donnée c'est d'utiliser un dataset justement ?

    Merci.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 89
    Points
    89
    Par défaut
    Tu peux très bien utiliser le SQLCommand sans utiliser un dataset, d'ailleurs je le fais souvent sans, car je trouve qu'il est trop lourd pour mes besoins. Ta syntaxe semble bonne, mis à part la Connection String que je ne peux confirmer si c'est valide.

    Essaie de forcer un Try ... Catch autour de l'exécution du insert en affichant le message d'une éventuelle exception ... Disons qu'à part de ça, soit c'est vraiment trop évident ou c'est un problème de ta connection.

    Bonne chance

  6. #6
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par hellspawn_ludo
    'Création d'une connection
    Dim connection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\" & fichier_bdd & ".mdf;Integrated Security=True;User Instance=True")
    C'est une base SQL EXPRESS 2005 ?
    Euh ! Il faut utiliser le serveur comme connexion, pas le fichier mdf...
    Renseigne-toi sur le propriétés de la chaine de connexion pour une base SQL EXPRESS 2005.

  7. #7
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Zyth : J'ai mis un Try autour du insert comme tu me l'as demandé et je n'ai aucune erreur retournée.

    Kelpan : Oui c'est une basse SQL Express 2005 que j'utilise. Quand tu dis qu'il faut utilisé le serveur et non le fichier .mdf, peux-tu me dire comment faire ?
    Quand je regarde les propriétés de ma chaine de connexion, dans le champ : nom de fichier de base de données, il est inscrit le chemin de ma base et le nom de fichier qui est : bddfilm.mdf.
    J'ai testé la connexion et vb me dit que le test est réussi.

    Je comprends pas.

    Je tiens a signalé que j'ai transformé ma requête INSERT en SELECT afin de voir si la connexion est bonne et si je peux récupéré des données avec EXECUTESCALAR et effectivement ça fonctionne. Donc je comprends vraiment pas pourquoi je ne peux pas faire de requête INSERT.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    peut être que tu es en mode transaction et il te manque un commit.

  9. #9
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Et comment je peux savoir si je suis en mdoe transaction ?

    Merci.

  10. #10
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Je ne savais pas qu'on pouvait se connecter via le fichier mdf sous SQL Express 2005. Comme quoi, on en apprend tous les jours (en même temps j'ai pas vraiment étudier SQL EXPRESS)

    Quoi qu'il en soit, je pense que le fait de se connecter via le fichier directement doit avoir des conséquences sur les autorisations.

    Tu peux déjà tester une connexion server classique pour voir si cela change quelque chose
    • Server=.\SQLExpress
    • Database=MaBaseDeDonnees
    • Trusted_Connection=True (ou Integrated Security = True)

  11. #11
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Kelpan,

    C'est ce que j'ai mis. Regarde mon premier poste. Intergated security est à TRUE et quand je teste la conenction via les propétés, le teste est positif.

    Là, je ne comprens vraiment plus rien.

  12. #12
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Ce n'est pas tout à fait la même chose

    Toi tu as AttachDbFilename = nomFichier.mdf
    Moi j'ai DataBase = NomBaseDeDonnees

    De plus, tu as User Instance=True.
    Je ne connais pas exactement les droits concernant ce type de connexion et tant qu'utilisateur, mais ça coute rien d'essayer le mode de connexion que je t'indique...

    Par contre, pour savoir réellement de quoi je cause, je vais faire des recherches sur le net (Cette liaison fichier m'interesse).

  13. #13
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Kelpan, j'ai créé ma connection grâce aux extraits que fournit VB2005 express.

    Ce qui m'a inséré un bout de code automatiquement auquel je n'avais plus qu'à modifier le nom des variables.

    Si tu veux, je peux te faire part de mon projet. C'est juste un formulaire auquel tu cliques sur un bouton afin qu'il insère dans ma table mes données.

    J'ai essayé le mode de connection que tu m'as indiqué. J'ai inscrit :

    Dim connection As New SqlConnection("Data Source=.\SQLEXPRESS;DataBase =C:\Documents and Settings\Ludo\Mes documents\Visual Studio 2005\Projects\Vidéo_Club\Vidéo_Club\bddfilm.mdf")

    Est-ce ce que tu voulait que j'essai ? En tout cas, quand je l'exécute j'ai un message d'erreur qui me dit : Echec de l'ouverture de sesion de l'utilisateur. L'utilisateur n'est pas assocué à une connexion SQL Server approuvé.


    Si c'est faux, peux-tu modifier le code que j'ai posté au début ? Je le copierai dans mon projet.

    Je te remercie.

  14. #14
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Ta base de données à bien un nom (bbdfilm ???)
    Je ne parle pas du fichier mdf

    Essaye comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Dim connection As New SqlConnection("Data Source=.\SQLEXPRESS;DataBase=bddfilm;Trusted_Connection=True)

  15. #15
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Le nom de ma base de données et le fichier mdf sont 2 choses différentes ?

    Je ne savais pas. Dans mon volet : explorateur de solution, j'ai une base de donnée nommée bddfilm.mdf. Je fais référence à elle dans mon code.

    Comment puis-je obtenir le nom de ma base données puisque tu dis que c'est n'est pas le fichier mdf ?

    J'ai essayé avec ta ligne de déclaration mais j'obtiens un message d'erreur : impossible d'ouvrir la base de données 'bddfilm' demandée par la connexion.

    Pour faire plus simple et bien entendu si tu veux bien, puis-je te faire parvenir par MP mon formulaire avec ma base de données ?

  16. #16
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Kelpan,

    J'ai peux être trouvé quelque chose sur le site :

    http://www.connectionstrings.com/?carrier=sqlserver2005

    Juste en dessous de l'exemple fournit au titre suivant : "Attach a database file, located in the data directory, on connect to a local SQL Server Express instance", il y a en téléchargement le SQL NATIVE CLIENT. Je ne sais pas s'il est installé sur mon pc et surtout si ça pourrait régler mon problème mais dès que je rentre du taf, je l'installe.

    Penses-tu que ça pourrait résoudre mon problème ?

  17. #17
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Ok, faut que je vois ça.

    Tu manages ta base via MSDE ou tu fais tout par code ?
    Par exemple : Comment as-tu créer ta base de données, tes tables, tes vues, tes procs stockées, ... ???

  18. #18
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Non, je n'ai pas créer mes tables par code. J'ai utilisé le msde

  19. #19
    Membre actif Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Kelpan, j'ai trouvé.

    La solution est que dans le fichier : app.config il faut remplacer dans la balise <connectionstring> le |DataDirectory| par le chemin complet d'ou se situe la base de donnée (c:\...) et passé dans l'onglet Paramètre du My Project afin que celui-ci puisse se mettre à jour en répondant OUI lorsqu'une fenêtre s'ouvre qui stipule que le fichier app.config a été modifié.

    Et ça marche.

    Merci tout de même de m'avoir aider.

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

Discussions similaires

  1. [XL-2010] Insertion impossible de requete sql.
    Par Olamb dans le forum Excel
    Réponses: 14
    Dernier message: 29/01/2013, 10h10
  2. Problème requete insert en vba, impossible d'ajouter une date.
    Par GarnierFlorian dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/09/2010, 08h58
  3. Requete INSERT dans code VBA
    Par Gremandine dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/04/2010, 09h49
  4. Requete insert dans code
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/02/2007, 12h13
  5. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05

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