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 :

Sauver des données dans une base de donnée


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Sauver des données dans une base de donnée
    Bonjour,
    je suis un débutant en Csharp, et j'ai une question que je pense etre assez simple a resoudre...

    pour simplifier, j'ai une base de donnée avec une table client, 2 formulaires (formClient et formAjoutClient, formClient appelant bien sur formAjoutClient qui me permet d'ajouter un nouveau client).

    apres avoir cherché plusieurs tutos sur le net (anglais/fra) et youtube et ce forum, je ne pense pas avoir trouvé une reponse a comment effectivement enregistrer un nouveau client dans la base de donnée. (pas dans le dataset).
    (encore une fois je suis debutant, alors il est possible que je me trompe ou d'avoir mal compris... )

    je suis au courant de l'utilité des datagridview, mais je préfère ne pas les utiliser (je serai noté a la rentré sur mon travail et j'ai peur que les profs ne pensent que j'ai choisis la solution de facilité). de plus, pour autant que j'ai compris, les boutons ajouter/sauver ajoutés automatiquement avec le DGV ne changent que le dataset et pas la BDD.



    alors simplement ma question est :
    comment ajouter une nouvelle ligne dans la base de donnée afin de sauvegarder un nouveau client?
    et alternativement, la modification d'un client est-elle similaire?

    merci d'avance

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Le dataGridView n'est effectivement utilisé que pour l'affichage des données et n'interfère avec la base que lorsque tu lui dis de le faire dans les différents évenements qu'il gère.
    Pour enregistrer une donnée dans la base, il faut passer soit par ce qui est donné dans la FAQ, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // chaine de connexion
                string connectString = "database=test_paresco;server=am01;User ID=BACK;pwd=xxxxxx";
                // Objet connection
                SqlConnection connection = new SqlConnection(connectString);
                // Ouverture
                connection.Open();
                // Objet Command
                SqlCommand command = new SqlCommand("SELECT * FROM usr_contract", connection);
                // Objet DataReader
                SqlDataReader reader = command.ExecuteReader();
                // ....
     
                // Fermeture connection
                connection.Close();
    Et je dirai qu'il suffit de changer la requete select par un insert ;

    Soit passer par la couche DAL prévue par ton ORM si tu en utilises un.

  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 : 43
    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 753
    Points
    39 753
    Par défaut
    Sur les Connections, Commands et DataReaders :
    http://dotnet.developpez.com/articles/ado1/csharp/

    Sur les DataSets et DataAdapters :
    http://dotnet.developpez.com/articles/ado2/csharp/

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci de vos réponses, je vais lire ces documents et essayer de comprendre, et si j'ai d'autre questions je les poserais sur le meme sujet plus tard

  5. #5
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Arf ! effectivement tu as mal cherché. Peut-être parce que tu n'as pas su formuler sur google.
    Ce que tu cherches c'est l'ADO.NET.
    Il y a d'autres façons de procéder, mais l'ADO, c'est la base.

    Tu es débutant, certes, je ne sais pas si tu es autodidact ou quoi, mais, si tu as été formé, Ton formateur à négligé une aprt importante de sa formation !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par kheironn Voir le message
    Arf ! effectivement tu as mal cherché. Peut-être parce que tu n'as pas su formuler sur google.
    Ce que tu cherches c'est l'ADO.NET.
    Il y a d'autres façons de procéder, mais l'ADO, c'est la base.

    Tu es débutant, certes, je ne sais pas si tu es autodidact ou quoi, mais, si tu as été formé, Ton formateur à négligé une aprt importante de sa formation !
    malheureusement, c'est un travail d'été a faire seul (apprendre un nouveau langage informatique, tout seul)... donc pas de formation :/ juste utiliser le peu de langages que l'école nous a apprit (cad component pascal & un tout petit peu de vba) comme bases.




    je ne change pas le thread en resolu, car je VAIS avoir d'autres questions a poser des questions bêtes de débutant mais qui me bloquent. heureusement, grâce a mes bases de vba, j'arrive a gérer tout ce qui est présentation donc que des questions sur ces bases de données.

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Si tu debutes, je te conseille aussi Entity Framework.

    C'est beaucoup plus simple pour lier ta base de donnees a ton code.

    Et ca te permet te faire une application sans datagridview etc

  8. #8
    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 : 43
    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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Frederic.F Voir le message
    Si tu debutes, je te conseille aussi Entity Framework.

    C'est beaucoup plus simple pour lier ta base de donnees a ton code.
    Non, justement ! Je déconseille vivement Entity Framework (ou Linq to SQL, ou NHibernate, ou n'importe quel ORM) à quelqu'un qui n'est pas encore à l'aise avec ADO.NET. C'est super important de comprendre ce qui se passe derrière, sinon quand tu commences à rencontrer des problèmes avec l'ORM tu ne sais plus quoi faire... Et puis les ORM ne sont pas adaptés à tous les usages, souvent il vaut mieux faire du SQL direct.

    Citation Envoyé par Frederic.F Voir le message
    Et ca te permet te faire une application sans datagridview etc
    Je vois pas le rapport... le DataGridView est un composant UI, tu peux l'utiliser (ou non) quel que soit la technique que tu utilises pour l'accès au données. C'est complètement indépendant...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    rebonjour, d'autre questions bêtes de noob

    après lecture de ces 2 articles, j'ai voulu essayer d'ajouter de nouvelles données, mais malheureusement je me suis très vite retrouvé bloqué.

    1- ou dois-je mettre tout ce code?
    je rappelle que j'ai 3 formulaires : 1 qui agit comme menu principal pour accéder au différentes parties du programme (qui permet d'arriver a d'autre formulaires sur la gestion des clients/achats/etc, mais pour simplifier on peut supposer que je n'ai que 3 formulaires au lieu de 9), 1 qui fait office de browser uniquement (et qui possède les boutons ajouter/modifier/supprimer pour accéder au 3eme formulaire) et enfin donc, un troisième qui contient les champs nécessaires pour taper les informations relatives au client.
    personnellement je pense que le code va dans la fenêtre d'ajout, lors du clic sur le bouton OK ; et pas dans le browser j'ai juste?


    2- enfin, d’après ce que j'ai compris des articles et des posts, après avoir mis a jour le dataset (que ce soit ajout/suppression/maj) je peux mettre a jour la BDD grâce au dataset?
    pour reprendre l'exemple de Isythiel, cela copiera les données du dataset a la BDD et mettra a jour la BDD?


    merci d'avance pour votre aide

  10. #10
    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 : 43
    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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par BatonMousse Voir le message
    1- ou dois-je mettre tout ce code?
    Bah ça dépend, mais par exemple dans un formulaire qui affiche des données, tu vas mettre le code dans l'évènement Load du formulaire.

    Citation Envoyé par BatonMousse Voir le message
    2- enfin, d’après ce que j'ai compris des articles et des posts, après avoir mis a jour le dataset (que ce soit ajout/suppression/maj) je peux mettre a jour la BDD grâce au dataset?
    pour reprendre l'exemple de Isythiel, cela copiera les données du dataset a la BDD et mettra a jour la BDD?
    Un DataSet s'utilise comme ça :
    - tu le remplis à partir de la base de données à l'aide d'un DataAdapter
    - tu travailles sur les données en mémoire dans le DataSet
    - quand tu as fini, tu enregistres dans la base les modifications du DataSet en utilisant le DataAdapter

    L'exemple d'Isythiel n'a rien à voir avec les DataSets

  11. #11
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Pour le où : il faut découper en couche, donc la partie accès aux données (lecture/écriture), une couche métier, une interface utilisateur (fut-ce une console), et ...

    A la place des DataSet - certains te dirons que c'est à chier, pas tous - tu peux utiliser des objets qui sont peuplés à l'aide de DataReader et ainsi retrouner une instance ou une collection d'objets.

    Il y a plusieurs façons de faire, qui dépendent (en partie) du choix du chef !

    Personnellement j'ai débuté avec du DataSet typé où chaque table était clairement définie, puis un CDP m'a dit " le DataSet, c'est de la mer**... " et hop mappage db/objet...
    Si ton but est d'apprendre et que tu as le temps, alors essaie les deux !

    Je n'en mettrait pas ma main à couper, mais je crois que EF fait du mappage db/objet (je n'ai jamais utilisé)

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah ça dépend, mais par exemple dans un formulaire qui affiche des données, tu vas mettre le code dans l'évènement Load du formulaire.


    Un DataSet s'utilise comme ça :
    - tu le remplis à partir de la base de données à l'aide d'un DataAdapter
    - tu travailles sur les données en mémoire dans le DataSet
    - quand tu as fini, tu enregistres dans la base les modifications du DataSet en utilisant le DataAdapter

    L'exemple d'Isythiel n'a rien à voir avec les DataSets
    oui biensur, tout le code ne va pas au même endroit, je suis bête des fois
    et merci de ton explication sur les dataset, c'est clair, concis et utile

  13. #13
    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 : 43
    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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par kheironn Voir le message
    Pour le où : il faut découper en couche, donc la partie accès aux données (lecture/écriture), une couche métier, une interface utilisateur (fut-ce une console), et ...
    J'ai hésité à le mentionner, mais je me suis dit que pour un débutant c'était pas le plus urgent... Mais effectivement dans l'absolu il vaut mieux séparer l'aspect accès aux données de l'interface graphique

  14. #14
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Dans sa question, il demandait aussi où placer son code... autant lui donner les bonnes pratiques dès le début

Discussions similaires

  1. inserer les données d'une base de données dans une autres?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/10/2011, 13h33
  2. Réponses: 5
    Dernier message: 10/01/2008, 08h47
  3. [Conception] Gestion des accents dans une base de données
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/07/2005, 11h41
  4. Interet de mettre des fichiers dans une base de donnée
    Par Oberown dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 04/07/2005, 11h35
  5. inserer des images dans une base de données
    Par alilou04 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2004, 18h54

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