Update Mysql Table from csharp datagridview

olibara
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
- 18 févr. 2008 à 13:47
olibara
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
- 19 févr. 2008 à 19:08
Bonjour

Soit ma question erst tellement idiorte que personne ne veut y repondre soit personne ne connait la reponse

Je cherche un petit tutorial  simple me permetant de comprendre les concept élémentaire de mise a jour d'une Table Mysql a partir d'un datagridview

J'utilise MysqlConnector-net 2.0...
Pour la connexion la requel et le remplissage du dgv j'ai trouvé sans trop de probleme (voir plus bas)
MAIS apres l'assignation du datasource : faut -il fermer la connexion ???
Si l'utilisateur modifie ou ajoute une row dans le dgv : comment faire l'update ?

Merci pour toute aide éventuelle si quelqu'un connais un peu cela ...

Voici ma connexion et la requete de base

      string MyConString = "server=localhost;port=3306;uid=root;database=recutex;";
      string selectcmd;


      conn.ConnectionString = MyConString;
      conn.Open();


      MySqlDataAdapter adaTour = new MySqlDataAdapter();
      selectcmd = "SELECT distinct dag,chauffeurID FROM `tours`";
      adaTour.SelectCommand = new MySqlCommand(selectcmd, conn);


      // On définit en lieu de stockage et on le rempli avec le résultat de la requête
      DataSet dsTour = new DataSet();
      adaTour.Fill(dsTour);


      dgv_Tour.DataSource = dsTour.Tables[0];




 

1 réponse

olibara
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
19 févr. 2008 à 19:08
Bonjour


Comme tout le monde semble muet pour toute qustion d'update de DB je vais fournir le resultat de mes essais-erreurs, cela servira peut-etre a d'autres .....


Comment mettre a jour une DB a partir d'un DataGridView ?
Le datasource du DataGridView est un dataset rempli avec un datadapter

Premiere chose :
Utiliser le dataset de de travail (le datasource du datagridview) pour remplir un AUTRE dataset avec les modifications demandées

ch = dsAddr.GetChanges();
(ceci chargera un dataset (ch) avec tous les rows modifies et leurs status)
J'ai été surpris de voir que les rows déletés apparaisaient sans data visible (avec le debugger) mais la methode update se débrouille tres bien avec

Cependant Getchange() peut etre appelé avec un type de modification souhaité 
Voici un exemple pour l'operation Delete :

      DataSet ch = new DataSet();         // declaration du dataset temporaire pour charger les rows a traiter
      ch = dsAddr.GetChanges(DataRowState.Deleted);  // chargement des rows deleté
// construction de la commande SQL de delete
      adaAddr.DeleteCommand = new MySqlCommand("DELETE FROM address WHERE addrID=?addrID", conn);
// construction du parametrage de la commande delete
      adaAddr.DeleteCommand.Parameters.Add("?addrID", MySqlDbType.Int32, 11, "addrID").SourceVersion = DataRowVersion.Original;
// execution du delete
      adaAddr.Update(ch);
// ET VOILA
// J'ai peut etre réveillé ici quelques spécialiste qui pousseront des cris d'horreurs pour dire que c'est pas comme ca qu'il faut faire mais tant mieux car jusqu'ici : Silence Radio ........

En tout cas ca marche
Pour UPDATE et INSERT je vais encore investiguer mais il semble que la construction de la commande soit plus fastitieuse car il faut enumerer tous les champs...
A suive ...
0