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 :

problème INSERT INTO C#/Access


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut problème INSERT INTO C#/Access
    Bonjour,
    Je souhaite ajouter une valeur à ma table.
    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
    OdbcConnection cn = new OdbcConnection();
     
    try
    {
        cn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=DB_BU.mdb";
        cn.Open();
        OdbcCommand odbcInsert = new OdbcCommand(                
            "INSERT INTO tblRecettes (appellation) VALUES ('recette')");
        odbcInsert.ExecuteNonQuery();
        MessageBox.Show("OK !");
    }
     
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    La connexion s'établit mais j'ai tout de même le message d'erreur envoyé par l'exception.

    Merci de m'aider.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 77
    Par défaut
    Bonjour,

    Avez-vous fait afficher le message de l'exception?

    Cela peut vous renseigner sur la cause de la levé de l'exception.

    Dans votre clause try vous ne faîtes pas qu'établir la connexion, mais vous exécuter également une requête et l'exception peut provenir de l'exécution de celle-ci.

    Si le message de l'exception ne vous dit rien dîtes nous le contenu de celui-ci.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    J'ai édité mon code car j'ai fait une erreur lors du copier/coller.

    Voici l'exception levée en enlevant le try / catch() :
    ExecuteNonQuery : la propriété Connection n'a pas été initialisée.

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Il faut passer à l'objet command la connexion à utiliser, sinon ce sera difficile. Le message d'erreur est d'ailleurs très clair à ce sujet.

    Bref
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    odbcInsert.Connection = cn;

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    Merci !!!

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    Bonjour,

    J'ai enlevé le tag [RESOLU] car j'ai encore un soucis.

    Voici 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
    OdbcConnection cn = new OdbcConnection();
     
    try
    {
        string appellation_saisie = textBoxSaisieAppellation.Text;
        string groupe_saisi = textBoxSaisieGroupe.Text;
        string recette_1 = textBoxSaisieRecette1.Text;
        string nbMax_1 = textBoxSaisieNombreParCont1.Text;
        string recette_2 = textBoxSaisieRecette2.Text;
        string nbMax_2 = textBoxSaisieNombreParCont2.Text;
     
        cn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=DB_BU.mdb";
        cn.Open();
        OdbcCommand odbcInsert = new OdbcCommand(                
            "INSERT INTO tblRecettes (appellation, groupe, recette1, nbMax1, recette2, nbMax2) VALUES ("+appellation_saisie+", "+groupe_saisi+", "+recette_1+", "+nbMax_1+", "+recette_2+", "+nbMax_2+")");
        odbcInsert.Connection = cn;
        odbcInsert.ExecuteNonQuery();
    }
     
    catch (Exception ex)
    {
        MessageBox.Show("Erreur lors de la connexion à la base de données.");
        MessageBox.Show(ex.ToString());
    }

    Le message renvoyé est le suivant :
    Erreur de synthaxe(opérateur absent)dans l'expression'1734A'.
    Si recette_1 vaut 1734 sans le 'A' je n'ai pas de message d'erreur.

    Et dans les 2 cas rien n'est ajouté à ma table.

  7. #7
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    bonjour,

    pour inserer des chaines de caracteres dans Access, tu dois les encadrer par des guillemets, me semble-t'il...

    si tu mets 1734, c'est un entier, 1734A est une chaine

    je pense que tu t'économiserais pas mal de soucis en passant par des requetes paramétrées

    (sans parler des benefices en terme de securite )

    http://johannblais.developpez.com/tu...acces-donnees/

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    J'avais oublié les ' '. Voici le code qui ne renvoie plus d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OdbcCommand odbcInsert = new OdbcCommand(                
                        "INSERT INTO tblRecettes (appellation, groupe, recette1, nbMax1, recette2, nbMax2) VALUES ('"+appellation_saisie+"', '"+groupe_saisi+"', '"+recette_1+"', '"+nbMax_1+"', '"+recette_2+"', '"+nbMax_2+"')");
    En revanche les données ne sont pas insérées à la table.

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    Tout fonctionne.
    Je m'étais trompé de fichier.

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

Discussions similaires

  1. Problème de requète INSERT INTO avec access
    Par Hipopo dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/03/2010, 12h52
  2. [C#]faire 1 Insert Into sur Access
    Par mcay dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/02/2010, 11h47
  3. Problème Insert dans bdd Access
    Par waterman dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/04/2007, 17h15
  4. Probléme Insert into
    Par dellys2 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/02/2007, 10h46
  5. [Requête] Problème INSERT INTO
    Par lerico dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 10/01/2006, 17h12

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