Enregistrer une table dans une base de données (DataTable dans fichier .mdb) ?

AnnihilatorSupernova Messages postés 19 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 14 septembre 2005 - 25 août 2005 à 22:17
Pimpidon Messages postés 4 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 14 mars 2012 - 14 mars 2012 à 09:19
Voilà j'aimerais savoir comment faire pour enregistrer une variable de type DataTable dans un fichier .mdb (base de données Access).
J'ai essayé avec
string query = "INSERT INTO Table(col1,col2) VALUES(val1,val2);"
OleDbCommand comm = new OleDbCommand(query, oleDbConnection1);
oleDbConnection1.Open ();
comm.ExecuteNonQuery ();
oleDbConnection1.Close ();
en ayant créé une connexion oleDbConnection1 de type Jet 4.0 avec l'assistant, qui m'a dit que la connexion était ok !

Ceux qui savent le faire, pouvez vous me mettre un bout de code qui marche SVP ?

Merci d'avance.

5 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 août 2005 à 08:19
Hello,
Deux ou trois détails :
- Si tu mets VALUES(val1, val2), il ne sait pas de quoi il s'agit.
- Si tu travailles avec une DataTable, il vaut mieux ouvrir la connexion, tout insérer, et fermer la connexion.

Un exemple, où j'admets que col1 est un entier, et col2 un string :

oleDbConnection1.Open();
OleDbCommand comm = new OleDbCommand();
comm.connection = oleDbConnection1;

foreach(DataRow dr in dt) //dt is the DataTable
{
comm.CommandText = "INSERT INTO Table(col1, col2) VALUES("
+ (int)dr["col1"] + ", " + (string)dr["col2"] + ")";
comm.ExecuteNonQuery();
}

oleDbConnection1.Close();

Amicalement, SharpMao
0
AnnihilatorSupernova Messages postés 19 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 14 septembre 2005
26 août 2005 à 11:51
Lorsque je compile, j'ai une erreur : "l'instruction foreach ne peut pas agir sur des variables de type 'System.Data.DataTable', cas 'System.Data.DataTable' ne contient pas de définition pour 'GetEnumerator', ou est inaccessible."
Sinon pour le reste, merci c'est exactement ça et je n'ai pas d'erreur.
0
AnnihilatorSupernova Messages postés 19 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 14 septembre 2005
26 août 2005 à 12:22
J'ai donc essayé
int i = 0;
oleDbConnection1.Open();
OleDbCommand comm = new OleDbCommand();
comm.connection = oleDbConnection1;
for (i = 0; i < Table.Rows.Count; i++)
{

comm.CommandText = "INSERT INTO Table(col1, col2) VALUES("
+ (int)Table.rows[i]["col1"] + ", " + (string)Table.Rows[i]["col2"] + ")";
comm.ExecuteNonQuery();
}
oleDbConnection1.Close();
mais cette fois-ci j'ai une autre erreur : "Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll."
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 août 2005 à 12:24
Excuse-moi, une petite erreur :

foreach (DataRow dr in dt.Rows)
//...

Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pimpidon Messages postés 4 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 14 mars 2012
14 mars 2012 à 09:19
Bonjour,

Mais dans le cas contraire, pour extraire des données sous forme de tableau d'un fichier .mdb en c++, Comment pourrais-je procéder sil vous plait??
Car je n'ai jamais testé et j'avoue ne pas savoir par ou commencer.....

Cordialement


Pimpidon
0
Rejoignez-nous