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

ADO.NET Discussion :

dataset vers, dans base de données : mise à jour


Sujet :

ADO.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut dataset vers, dans base de données : mise à jour
    Bonjour à tous...

    je suis un amateur donc merci d'avance pour votre indulgence...

    ma question : comment faire pour que le dataset modifié renvoie les nouvelles données, modifications et autres trucs vers, dans la base de données.

    mon morceau de 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;
     
    namespace dataset_exemple
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private OleDbConnection cnA; // connexion à access
            private string access = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=bdcontact.mdb"; // chaine de connexion
     
            private void button1_Click(object sender, EventArgs e)
            {
                // afficher
                this.listBox1.Items.Clear();
     
                foreach (DataRow cur in this.ds.Tables[0].Rows)
                {
                    this.listBox1.Items.Add(cur["cprenom"] + " " + cur["cnom"]);
                }
     
     
            }
     
     
            DataSet ds;
            OleDbDataAdapter adap;
            private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
     
                    cnA = new OleDbConnection(access); // initialise ma chaine de connexion
     
                    // création d'une commnande qui va contenir une requete 
                    OleDbCommand cmd = new OleDbCommand("select * from personne", cnA); 
     
                    // initialisation d'un dataset conteneur pour le résultat de la requete
                    this.ds = new DataSet("dst");
     
                    // l'adapter permet de communiquer avec la base il exécute la requete
                    this.adap = new OleDbDataAdapter(cmd);
     
                    // fill(ds) provoque l'ouverture de la connexion
                    adap.FillSchema(ds, SchemaType.Mapped);
                    adap.Fill(ds);               
     
     
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "\r\n" + ex.Source);
                }
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
     
                    object[] array = new object[4];
                    array[0] = null;
                    array[1] = "1";
                    array[2] = "trou";
                    array[3] = "lala";
     
                    this.ds.Tables[0].Rows.Add(array); // ajoute le row au dataset 
                    this.ds.AcceptChanges(); // valide les changements
     
     
                    this.adap.Update(this.ds); // là je m'attends à ce que la base se mette à jour mais que dalle : je vois que j'ai loupé une marche voire deux lol
     
                    this.button1_Click(sender, e);
     
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
     
            }
        }
    }
    sachant que je rêve d'un dataset qui met à jour les données de la base automatiquement.

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Bonjour,

    C'est assez simple et vous êtes sur la bonne voie.

    Vous créer un OleDbDataAdapter et vous passez votre requête SQL au constructeur.

    Si vous regarder la documentation de OleDbDataAdapter , vous verrez qu'il y a en fait 3 propriétés qui représentent les requêtes (qui sont en fait des OleDbCommand) :

    - SelectCommand
    - InsertCommand
    - UpdateCommand

    Vous devez les initialiser toutes les 3 avec des requêtes Select, Insert et Update valable.

    Quand vous effectuer la méthode Fill sur votre objet OleDbDataAdapter , vous exécutez en faite la SelectCommand qui remplis votre DataSet.

    Ensuite Effectuez les différentes modifications que vous avez à faire sur votre Dataset.

    Pour l'enregistrement il suffit ensuite de faire appel à la méthode Update de votre OleDbDataAdapter et un appel à la méthode AcceptChange sur l'objet Dataset (ou un appel d'abord de la fonction AcceptChange puis Update je dois avoué que je ne suis plus sur de l'ordre de mémoire).

    J'espère que j'ai été assez clair
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. Mise en forme du champs de formulaire dans base de données
    Par yesnie dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/06/2010, 14h58
  2. Réponses: 3
    Dernier message: 17/09/2009, 15h26
  3. Réponses: 3
    Dernier message: 05/01/2009, 16h12
  4. Réponses: 2
    Dernier message: 05/12/2008, 11h12
  5. Réponses: 10
    Dernier message: 28/06/2007, 15h27

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