Accueil | Aide en ligne | Annuaire | Sécurité | Articles | Astuces | Téléchargements | Association 


Mon compte SOS Ordi

Vous n'êtes pas identifié
[-> S'inscrire à SOS Ordi
[-> Mot de passe perdu ?
S'identifier


Rechercher sur SOS Ordi

Ok

Dans





 Catégories de l'aide en ligne

 Aide en ligne


 Saviez vous que ...

Si vous résolvez une question, vous gagnez des points


 Partenaires

  SOS Ordi > Aide en ligne > Logiciel > Développement > Base de données > enregistrer un datagrid dans base de données

enregistrer un datagrid dans base de données

19 réponse(s)
dont 4 ont aidé softkipeu à résoudre son problème

  Problème résolu posté le 15/02/2005 à 11:23
Profil Configuration PC
softkipeu


Aucun
État : Absent
Je n'ai pas de probleme pour afficher une base de données dans un dataGrid ( grille windows form en c#).
Mais l'operation inverse, je ne sais pas faire ....
Apres avoir ,a la main, modifier mon dataGrid dans l'application, j'aimerais pouvoir recopier le contenu du dataGrid, modifie, dans ma base de données.
En resume: data base --> dataGrid ( simple, qql lignes )
dataGrid --> data base ( problemes )

   

Bas de page 


Information

Pour participer vous devez d'abord être membre ou identifié :
[-> M'identifier
[-> Je ne suis pas membre SOS Ordi, je souhaite m'inscrire
[-> J'ai perdu mon mot de passe


  Réponse postée le 15/02/2005 à 11:27
Profil du membre Configuration PC
Al1X



État : Absent
regarde ici :
http://www.csharpfr.com/codes/MISE_[...]GRID/28791.aspx

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 15/02/2005 à 15:52
Profil du membre Configuration PC
softkipeu



État : Absent
merci Al1x .
j'ai encore un PB.
j'ai utilise le code (sous MySQL).Donc la seule difference porte sur la troisieme ligne qui devient:

MySqlDataAdapteur MonAdapteur=new MySqlDataAdapteur();
MonAdapteur.Update (ds) ;

Au lieu de:

this.oleDbDataAdapter1.Update (ds) ;

Je recupere un message d'erreur: Update requiert un UpdateCommande valide lors du passage de la collection DataRow avec des lignes modifiees.
J'ai, bien sur, ce probleme seulement si je modifie qqchose dans le DataGrid.

  Réponse postée le 15/02/2005 à 17:46
Profil du membre Configuration PC
Al1X



État : Absent
tu ne peux pas attaquer ta base mysql en oledb ? comme ça tu ne modifies rien. Ou pourquoi n'utilises tu pas msde ? ce serait encore plus simple (c'est un sql gratuit de microsoft)

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 16/02/2005 à 10:21
Profil du membre Configuration PC
softkipeu



État : Absent
merci Al1x .

Je vais essayer msde.
J'avais utilise mysql sur conseil d'un collegue.
Je ne connaissais pas les bases de données.
Je ne sais pas s'il existe, comme avec mysql (mysql control center), de systeme gratuit pour la conception graphique des bases de donnees.
Je vais me renseigner, encore merci.

  Réponse postée le 16/02/2005 à 10:29
Profil du membre Configuration PC
Al1X



État : Absent
vas sur ce site et recupere dbdesigner
http://www.fabforce.net/

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 07:40
Profil du membre Configuration PC
softkipeu



État : Absent
Réponse a Al1X postée le 15/02/2005 à 17:46
Je n'utilise pas la base mysql en oledb ........
J'ai remplacé:
this.oleDbDataAdapter1.Update (ds);
Par:
MySqlDataAdapteur MonAdapteur=new MySqlDataAdapteur();
MonAdapteur.Update (ds) ;
Quand à utiliser msde au lieu de mySQL, mis à part le fait que c'est amusant à installer, je n'ai pas de meilleurs résultats.

Je pense ne pas avoir correctement pausé la question:

-> Je charge avec une base de données un dataGrid.
-> Je le modifie (dans l'utilisation de l'application).
-> Je le sauve dans la base de données.

Je ne trouve, actuellement, personne capable de m'indiquer comment procèder pour cette dernière ligne.

  Réponse postée le 19/02/2005 à 07:49
Profil du membre Configuration PC
Al1X



État : Absent
tu peux mettre le source de ton programme ? (la partie mise à jour, je n'ai pas besoin du source des forms smile.gif )

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 08:17
Profil du membre Configuration PC
softkipeu



État : Absent
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using ByteFX.Data.MySqlClient;

// Pour charger la base de données dans le dataGrid

private void button1_Click(object sender, System.EventArgs e)
{
// Crée une chaine de connexion
string sConnString = "database=gestion_clients;data source=localhost;user id=root";
// Déclaration de la requète MySQL
MySqlDataAdapter MonAdapter=new MySqlDataAdapter();
// Déclaration d'un dataset (cache en mémoire de données)
DataSet ds=new DataSet();
// Crée une chaine
string maCmd="SELECT * FROM tyty";
// Déclaration de la connexion MySQL
MySqlConnection conn = new MySqlConnection(sConnString);
// Ouverture de la connexion au serveur
conn.Open();
// Exécution d'une requète SELECT
MonAdapter.SelectCommand=new MySqlCommand(maCmd,conn);
// Remplissage du dataset
MonAdapter.Fill(ds);
// Charge la Table[liste_des_villes] dans le dataGrid1
dataGrid1.DataSource=ds.Tables[0];
// Fermeture de la connexion au serveur
conn.Close();
}

// Pour charger le dataGrid dans la base de données

private void button2_Click(object sender, System.EventArgs e)
{
MySqlDataAdapter MonAdapter=new MySqlDataAdapter();
dataGrid1.Update();
DataTable dt=(DataTable) dataGrid1.DataSource;
MonAdapter.Update(dt);
}

  Réponse postée le 19/02/2005 à 09:35
Profil du membre Configuration PC
Al1X



État : Absent
Il faudrait que je repotasse mes cours mais si tu fermes ta connection apres le remplissage, comment il va la retrouver au moment de la mise à jour ?
Tu travailles tout en local ? Tu utilises visual studio ?

Edité par Al1X le 19/02/2005 à 09:36



-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 09:50
Profil du membre Configuration PC
Al1X



État : Absent
regarde egalement cette commande :
/ Create command builder. This line automatically generates the update commands for you, so you don't
// have to provide or create your own.
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter);

Si tu es en VS, verifie dans le source generé que tu as bien les instructions de mise à jour du DataAdapter sinon modifie les proprietes.
ATTENTION : les mySQL ci dessus correspondent à une BDD SQL serveur pas à une BDD MYSQL !

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 10:17
Profil du membre Configuration PC
softkipeu



État : Absent
J'ai volontairement simplifié le code de button2.
J'ai, en fait, essayé un grand nombre de possibilités, sans résultats.
( Ouverture/fermeture de la connexion, etc .... Comme dans button1 )
C'est bien la qu'est le problème.
Je ne sais pas comment faire ...
Pour ce genre d'application (de type technique), je cherche à enregistrer, modifier et sauvegarder localement un grand nombre d'informations.
Avant j'utilisais des windows forms et des fichiers clasiques cela marchait trés bien, et j'ai voulu utiliser pour """simplifier ...""" ,des bases de données.
Aussi j'utilise pour ces applications: visual studio pro sous C#, et je travail bien sur exclusivement en local sur mon disque dur.
Merci.

  Réponse postée le 19/02/2005 à 10:22
Profil du membre Configuration PC
Al1X



État : Absent
>Update requiert un UpdateCommande valide lors du passage de la collection DataRow avec des lignes modifiees.
tu as essaye le sqlcommanbuilder ?

Pour tester si le pbm vient de la connection,
Essaye dans la meme fonction l'ouverture le remplissage du dataset la modif de ce dataset (par programme) et l'appel de la fonction update.
Pas de passage en datagrid et avec une seule ouverture de connection.

Edité par Al1X le 19/02/2005 à 10:23



-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 10:51
Profil du membre Configuration PC
softkipeu



État : Absent
J'ai essayé:
MySqlCommandBuilder MonAdapteur=new MySqlCommandBuilder(MySqlAdapteur);
Je me fait jetter plus loing "MonAdapteur.Update(dt);"
pas de définition pour Update ......
Comment et ou verifier s'il y a les instructions de mise à jour du DataAdapter ?
Je ne m'interesse que depuis 15 à ces bases de données et j'ai du mal à suivre.
Je n'arrive pas pour l'instant à créer l'instruction pour: l'ouverture le remplissage du dataset la modif de ce dataset (par programme) et l'appel de la fonction update.
Je cherche .....
Merci.

  Réponse postée le 19/02/2005 à 12:49
Profil du membre Configuration PC
Al1X



État : Absent
> J'ai essayé:
MySqlCommandBuilder MonAdapteur=new MySqlCommandBuilder(MySqlAdapteur);
Je me fait jetter plus loing "MonAdapteur.Update(dt);"
pas de définition pour Update ......
----
Dans ton cas c'est plutot :
MySqlCommandBuilder MonSqlCommandBuilder=new MySqlCommandBuilder(MonAdapteur);

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 19/02/2005 à 13:32
Profil du membre Configuration PC
softkipeu



État : Absent
OK : je viens juste de l'essayer avant d'ouvrir ton message. Mais il n'apprécie pas la ligne monAdapter.Update(ds,myTableName); ....?
Avec myTableName = "tyty" (qui est le nom de ma table dans la BDD.



private void btValider_Click(object sender, System.EventArgs e)
{
// avec "tyty" = table de la BDD "gestion_clients"
string myTableName="tyty";
string sConnString = "database=gestion_clients;data source=localhost;user id=root";
string maCmd="Select* FROM tyty";

MySqlConnection conn = new MySqlConnection(sConnString);

MySqlDataAdapter monAdapter=new MySqlDataAdapter();

monAdapter.SelectCommand = new MySqlCommand(maCmd,conn);

MySqlCommandBuilder cb=new MySqlCommandBuilder(monAdapter);

conn.Open();

DataSet ds=new DataSet();
monAdapter.Fill(ds);
DataTable dt=new DataTable();
monAdapter.Update(ds,myTableName);

conn.Close();
}

  Réponse postée le 19/02/2005 à 17:20
Profil du membre Configuration PC
Al1X



État : Absent
un article à lire : http://www.sys-con.com/story/?story[...]=38826&DE=1

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 23/02/2005 à 13:34
Profil du membre Configuration PC
softkipeu



État : Absent
Je pense avoir reglé mon probleme (en utilisant MySqlCommandBuilder et en bricolant un peut ....)
Je remercie Al1X pour ces conseils et sa patience.

  Réponse postée le 23/02/2005 à 22:52
Profil du membre Configuration PC
Al1X



État : Absent
merci pour tes compliments, peux tu preciser un peu plus ce que tu as fais ? copie la partie du code ou tu as mis le mysqlcommandbuilder, ça devrait pouvoir me servir un jour !

-------------------------------------------------------
Si vous ne trouvez pas ici pensez à : www.google.com

  Réponse postée le 24/02/2005 à 15:42
Profil du membre Configuration PC
softkipeu



État : Absent
string maCmd="SELECT * FROM tyty";
string sConnString = "database=gestion_clients;data source=localhost;user id=root";
MySqlConnection conn = new MySqlConnection(sConnString);
MySqlDataAdapter MonAdapter=new MySqlDataAdapter();
MySqlCommandBuilder cb=new MySqlCommandBuilder MonAdapter);
Conn.Open();
MonAdapter.SelectCommand=new MySqlCommand(maCmd,conn);
MonAdapter.Update(ds1,"Table1");
conn.Close();
c'est OK..



Haut de page 

 

Version 5.6 | Infos / Contacts | Partenariat | Publicité