Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > ADO.NET
ADO.NET Forum d'entraide sur le développement avec les services d'accès aux données disponibles avec ADO.NET.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/12/2012, 17h22   #1
alcoveforlove
Invité de passage
 
Homme stephane varloteaux
amateur
Inscription : septembre 2012
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme stephane varloteaux
Âge : 40
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.
alcoveforlove est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 22h16   #2
infosam76
Membre Expert
 
Homme Eric Metz
Développeur informatique
Inscription : avril 2006
Messages : 515
Détails du profil
Informations personnelles :
Nom : Homme Eric Metz
Âge : 36
Localisation : Belgique

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

Informations forums :
Inscription : avril 2006
Messages : 515
Points : 1 601
Points : 1 601
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
infosam76 est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h04.


 
 
 
 
Partenaires

Hébergement Web