Dataset : mise à jour de la base de données

Messages postés
12
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2011
- - Dernière réponse : alcoveforlove
Messages postés
12
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2011
- 18 mai 2011 à 14:28
BONJOUR à tous.

débutant en ado.net je cherche à mettre à jour les données de ma base de données via un dataset. toute aide sera la bienvenue. Merci d'avance...

OleDbConnection cnA; // connexion à access
string access = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=bdcontact.mdb"; // chaine de connexion

cnA = new OleDbConnection(access); // initialise ma chaine de connexion
cnA.Open();

// 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
DataSet ds = new DataSet("dst");

// l'adapter permet de communiquer avec la base il exécute la requete
OleDbDataAdapter adap = new OleDbDataAdapter(cmd);

//
adap.FillSchema(ds, SchemaType.Mapped);
adap.Fill(ds);


cnA.Close();

// calcul du nombre d'enregistrements dans le dataset conteneur du resultat de la requete
int max = ds.Tables[0].Rows.Count;

// ###################
// INSERT
// ###################

DataRow r = ds.Tables[0].NewRow(); // je crée un row
ds.Tables[0].Rows.Add(r); // j'ajoute mon row vide au dataset pour pouvoir accueillir l'insert

max += 1; // j'incrémente le nombre d'enregistrements pour pouvoir obtenir le prochain id de la base
String insert = "INSERT INTO personne values ("+max+",'1', 'Prenom', 'Note','','','','','','','','','','','','')";
adap.InsertCommand = new OleDbCommand(insert,cnA); // je crée une commande insert

cnA.Open();
adap.Update(ds); // j'insère
cnA.Close();

// ##########################
// UPDATE
// ##########################

string _update = "UPDATE personne set cprenom='toi' where cnom like 'VARLOTEAUX'";
adap.UpdateCommand = new OleDbCommand(_update, cnA);


cnA.Open();
adap.Update(ds); // je mets à jour (il ne se passe rien grrr !!!
cnA.Close();





foreach (DataRow cur in ds.Tables[0].Rows)
{
this.listBox1.Items.Add(cur["cprenom"] + " " + cur["cnom"]);
}
Afficher la suite 

2 réponses

Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
0
Merci
string _update = "UPDATE personne set cprenom='toi' where cnom like 'VARLOTEAUX'";
adap.UpdateCommand = new OleDbCommand(_update, cnA);


cnA.Open();
adap.Update(ds); // je mets à jour (il ne se passe rien grrr !!!
cnA.Close();


> tu change la commande update puis tu lance un update sur le Dataset
normale qui ne se passe rien (car tu n'a pas modifier de données dans ton dataset)
modifie la valeur du prenom dans le dataset puis lance le adap.update(ds);

je t'invite a regarder mes sources, il y a un exemple qui devrait t'aider a comprendre le fonctionnement de tout cela



Arthenius
"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius
Messages postés
12
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2011
1
0
Merci
je te remercie beaucoup pour ta réponse. J'ai trouvé une reponse qui ne me convient qu'à moitié. Je la publie pour donner suite...

OleDbConnection cnA; // connexion à access
string access = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=bdcontact.mdb"; // chaine de connexion

cnA = new OleDbConnection(access); // initialise ma chaine de connexion
//cnA.Open();

// 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
DataSet ds = new DataSet("dst");

// l'adapter permet de communiquer avec la base il exécute la requete
OleDbDataAdapter adap = new OleDbDataAdapter(cmd);

// fill(ds) provoque l'ouverture de la connexion
adap.FillSchema(ds, SchemaType.Mapped);
adap.Fill(ds);


// cnA.Close();

// calcul du nombre d'enregistrements dans le dataset conteneur du resultat de la requete
int max = ds.Tables[0].Rows.Count;

// ###################
// INSERT
// ###################

DataRow r = ds.Tables[0].NewRow(); // je crée un row
ds.Tables[0].Rows.Add(r); // j'ajoute mon row vide au dataset pour pouvoir accueillir l'insert

max += 1; // j'incrémente le nombre d'enregistrements pour pouvoir obtenir le prochain id de la base
String insert = "INSERT INTO personne values ("+max+",'1', 'Prenom', 'Note','','','','','','','','','','','','')";
adap.InsertCommand = new OleDbCommand(insert,cnA); // je crée une commande insert


cnA.Open();
adap.Update(ds); // j'insère
cnA.Close();

// ##########################
// UPDATE
// ##########################

string _update = "UPDATE personne set cprenom='toi' where cnom = 'VARLOTEAUX'";
adap.UpdateCommand = new OleDbCommand(_update, cnA);


cnA.Open();
adap.UpdateCommand.ExecuteNonQuery(); // je mets à jour
cnA.Close();





foreach (DataRow cur in ds.Tables[0].Rows)
{
this.listBox1.Items.Add(cur["cprenom"] + " " + cur["cnom"]);
}




sachant que je n'aie pas encore lu tes sources.. mais j'y vais de ce pas ! Merci encore d'aider l'amateur que je suis
Commenter la réponse de alcoveforlove