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

alcoveforlove Messages postés 12 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 18 novembre 2011 - 16 mai 2011 à 19:38
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"]);
}

2 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
18 mai 2011 à 11:42
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..."
0
alcoveforlove Messages postés 12 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 18 novembre 2011 1
18 mai 2011 à 14:28
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
0
Rejoignez-nous