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

C# Discussion :

[ADO.net] insertion dans une base Access


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut [ADO.net] insertion dans une base Access
    bonjour,

    j'ai besoin de réaliser une application qui va insérer des données dans une base Access. ça parrait simple à premiére vue, mais je n'y parviens pas.
    je me suis basé sur des cours des forums et des applis pour essayer de gérer ma base, mais rien à faire, j'ai toujours le même probléme.
    en fait, j'ai un dataGrid qui affiche les données et lorsque j'ajoute de nouvelles données, elles s'affichent bien dans mon dataGrid. en revanche, elle ne sont pas sauvegardées dans la base.

    voici mon code d'insertion :
    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
     
    DataRow newLine;
                newLine = dataSet.Tables["regroupement"].NewRow();
                newLine["ID"] = dataSet.Tables.Count + 1;
                newLine["libRegroupement"] = "valeur de test 1";
                newLine["parentRegroupement"] = "valeur de test 2";
                dataSet.Tables["regroupement"].Rows.Add(newLine);
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                else
                {
                    connection.Open();
                }
                OleDbCommandBuilder cmdBuilder;
                cmdBuilder = new OleDbCommandBuilder(dataAdapter);
                dataAdapter.InsertCommand = cmdBuilder.GetInsertCommand();
                dataAdapter.Update(dataSet, "regroupement");
                dataSet.AcceptChanges();
                connection.Close();
    merci de m'avoir lu, j'espère que vous pourrez m'aider.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    je ne connais pas trop ta methode (il yen a plusieurs avec les meme outils)
    je te donnerais donc 2 reponse divergente

    1)
    tu peut effectuer le traitement toi meme via des ordres SQL
    je te joint une petite classe qui te permet d'executer une requete SQL sur une connection OleDb(type access)

    tu doit lui fournir la connexion, la requete SQL, true/false suivant si tu fait une lecture ou ecriture

    2)
    j'utilise maintenant un petit outils fort agreable qui gère tout sa pour moi de maniere très pratique je trouve
    il gère Access, SQLite, Oracle, SQL Serveur, MySql
    tu ne travail plus qu'avec des objets, plus besoin de t'embetter avec la base de donnèes

    (il faut tout de meme la crèè : la base + les tables) ensuite il genere tout tout seul => a essayer (ya une video qui te montre comment sa se passe)

    Invist
    Fichiers attachés Fichiers attachés

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    avant tout, merci de m'avoir répondu.

    ça ne fonctionne toujours pas.

    le méthode que tu utilise dans ta class je l'ai déjà essayée sans succès. le problème ne vient peu-être pas de mon code alors.

    voila comment j'ai utilisé ta class :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    connection.Open();
    TheBlackReverand.SQL.Tools.AccessTools.Executer(connection, "INSERT INTO regroupement VALUES(3, 'test', 'test')", false);
    connection.Close();
    aucune erreur ou exception ne m'est retournée.

    pour invist, je ne peu malheureusement pas l'essayer, je tourne avec VS2005.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    aucune erreur? prend garde a peut etre quelque try catch qui ne traiterais pas l'erreur comme il le faut


    si tu debug le status de connexion est bien sur "Open"?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    le statut de la connexion est bien sur Open au moment de l'appel de la méthode.

    j'ai relu ta class et je ne vois pas ce qui pourrais poser problème. dans mon code il n'y a pas grand chose, et aucun try/catch. j'ai juste un bout de code pour peupler le dataGridView et un bouton pour ajouter des valeurs statiques (c'est pour essayer d'arriver à manipuler cette foutu BDD hein !).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    tu a regarder du cotè des Providers?

    leur version vis à vis de celle de ta base Access

    je dit sa comme sa car la...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    je pense pas qu'il y ait de probléme de ce coté là, j'ai crée la base directement via VS. m'enfin je vérifierai demain parce que là je suis chez moi et j'ai pas ce qu'il faut.

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut re
    bonjour
    est ce que t as essayé la methode addnew!!
    voici un petit exemple
    agence est le nom de la table,cnx et la ado.connection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'ecrire des enregistrement sur une table dans la base de données
    rst.Open "select*from Agence", cnx, adOpenKeyset, adLockOptimistic
    'For Each olayer In ThisDrawing.Layers
    rst.AddNew
    rst.Fields("nomagence").Value = "hellala"
    rst.Fields("adresse").Value = "birrmiouste"
    rst.Fields("telephone").Value = "037370831"
    rst.Update

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    non, je n'ais pas essayé cette méthode. mais je ne vois pas à quoi correspond l'objet rst.

    sinon, voici mon provider : Microsoft.Jet.OLEDB.4.0

    je vais essayer de recréer la bdd via VS pour voir, parce qu'en fait je l'avais crée avec Access 2007.

    EDIT :

    je doit réinstaller SQL server 2005 express, parce que j'ai du mettre la version 2008 à un moment donné mais je crois que ça ne va pas.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    bon ben je ne parviens pas à créer un e base de données SQL, il y a une erreur à la création.

    enfin de toute façon, ca m'arrangerai que ce soit avec un fichier Access.

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut re
    le rst est l'objet recordset!!
    moi aussi j'ai travaillé avec une base access, et pour la manipulation des données, utilise le recordset comme tu travailles avec l'ado

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    je me souvenais bien qu'il yavais un changement de provider entre 2003-2007

    http://www.connectionstrings.com/access-2007
    http://www.connectionstrings.com/access


    ici on te conseil un autre provider
    Jet.OleDb v4 et conseil pour les versions anterieure a 2007

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Points : 65
    Points
    65
    Par défaut
    avec la nouvelle connectionString ça fonctionne ! nickel merci de votre aide !

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

Discussions similaires

  1. [XL-2010] comment faire des insert dans une base access sans avoir access
    Par Poulki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/08/2012, 07h45
  2. Erreur insert dans une base Access
    Par erce78 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/09/2008, 14h21
  3. Requête d'insertion dans une base ACCESS
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/11/2006, 17h41
  4. [VB.NET] création d'une table dans une base access
    Par smedini dans le forum Accès aux données
    Réponses: 1
    Dernier message: 31/12/2005, 11h53
  5. [C#] Insertion dans une base Access .mdb
    Par borgfabr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/03/2005, 15h30

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