Insert et Access [Résolu]

Signaler
Messages postés
57
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2010
-
Messages postés
57
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2010
-
Bonjour a tous



je suis débutant dans le traitement de base de données avec C#

je fais une requete insert qui ne marche pas le dernier catch me dit qu'il ya une erreur dans la requete

:VOICI le code si quelqu'un a une idée je suis preneur



public void connection2()

{



string chemin =Application.ExecutablePath;

String p;

p = Application.ExecutablePath;

p=p.Substring(0, p.LastIndexOf("\"));



strRequete=
"INSERT INTO information (date, type_transaction, motif, montant, lieu,
banque, mois, annee) VALUES('"+date+"', '"+transaction+"', '"+motif+"',
'"+montant+"', '"+lieu+"', '"+inter+"', '"+mois+"', '"+annee+"')";

string strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" +


//"Data Source=
E:\\ESSAIS\\TestC#\\ADODotNet1\\Contacts.mdb;";

"Data Source=" + p + "\\banque.mdb;";



try


{


oleDbConnection1.ConnectionString=strConnString;


oleDbConnection1.Open();


}



catch (Exception ex)

{


MessageBox.Show("Description de l'erreur: " +
ex.Message);

}




oleDbDataAdapter1.InsertCommand = new
System.Data.OleDb.OleDbCommand(strRequete,oleDbConnection1);


//oleDbInsertCommand1 =new
System.Data.OleDb.OleDbCommand(strRequete,oleDbConnection1);


//OdbcCommand myCommand = new OdbcCommand
(query,this.odbcConnection1);

try

{

oleDbDataAdapter1.InsertCommand .ExecuteNonQuery();

}

catch (Exception ex)

{


MessageBox.Show("Description de l'erreur: " +
ex.Message);

}

oleDbConnection1.Close();



}





merci a tous

7 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Bien sur.

Une fois que tu as recuperé la valeur que prends strRequete, tu ouvres ta base de données access.

Tu choisis l'onglet "Requete" -> creer une requete en mode creation. Tu ferme la fenetre qu'il t'ouvre "Afficher la table" et tu te mets en mode SQL (tu dois avoir un bouton dans la barre d'outil).. Tu colles la valeur de strRequete dedans et tu l'executes.

Enfin, sinon, en regardant strRequete, tu dois deja pouvoir voir ce qui cloche dans la syntaxe de ta requete. (en faisant simplement un MessageBox.Show(strRequete);


Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Salut

Quelle est l'erreur exactement ?
Tu as testé la valeur que prend ta requete directement dans access ?

Sinon, tu ferais mieux d'utiliser des parametres, plutot que de faire des concatenation pour construire te requete.



Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Autre chose : ca ne sert a rien de faire 2 try... Si la connexion plante, il va quand meme tenter d'executer la requete. Donc au contraire, regroupe tout dans le meme try/catch


Mx
MVP C#
Messages postés
57
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2010

Bonjour ,

L'erreur c'est que la requete est mal ecrit.



j'ai une messsage box apres execution du programe qui dit:

Description de l'erreur: Erreur de syntaxe dans l'instruction INSERT INTO



Merci pour toute solution
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Pour solutionner ca, tu prends la valeur de strRequete (sert toi d'un Breakpoint par exemple) et lance la dans access pour y voir plus clair au niveau de ton erreur


Mx
MVP C#
Messages postés
57
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2010

pourrai tu expliciter ce que tu entends par regarder au niveau access stp car je suis debutant et je voit pas ou regarder



merci
Messages postés
57
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2010

Merci a toi morpionMX car a cette methode avec acces en mode sql j'ai
pu voir que date est un mot reservé et c'etait la raison du bloquage





Encore Merci