Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro stephane varloteaux
    amateur
    Inscrit en
    septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Nom : Homme stephane varloteaux
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : septembre 2012
    Messages : 3
    Points : 3
    Points
    3

    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 :
    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
    Expert Confirmé

    Homme Profil pro Eric Metz
    Développeur informatique
    Inscrit en
    avril 2006
    Messages
    924
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Metz
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : avril 2006
    Messages : 924
    Points : 3 246
    Points
    3 246

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •