[C#]Mise à jour d'une base de donée Access

Résolu
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010 - 28 mai 2010 à 16:00
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010 - 15 juin 2010 à 10:30
Bonjour Monsieur,

svp je sollicite votre aide, en fait je suis un stagiaire dans une entreprise ou ils m'ont demandé de développer avec C# et je suis vraiment un débutant et j'ai bcq de problème.sur tout avec la base de donner access, voila ce j'essaie de faire c'est de lire un fichier texte qui contiens des donner différent,et il faut que je stock c'est donner dans plusieurs,tableau après, a l'aide de ces tableaux il faut que je initialise une base de donné access qui contiens des info sur le le fichier. la jusqu'à mnt j'arrive a se connecter a la base de donnée access et faire des modification mais j'arrive pas a faire la mise à jour avec la méthode data adapter(MyAdapter.Update(MyDataSet.Tables[0]);) ,j'ai toujours ces erreur "Erreur de syntaxe dans l'instruction INSERT INTO.","Erreur de syntaxe dans l'instruction UPDATE."
svp est ce que vous avez des aidé qui peuvent me faire avancer mon programme,avez vous des exemple ou des tutorial sur "ADO.Net OleDbDataAdapter Updating a DataSource" qui peuvent m'aider.

voila mon programme
using System;
using System.Data;
using System.Data.OleDb;


class MainClass
{
static void Main(string[] args)
{
OleDbConnection MyConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source = D:\\Mohammed EL KASMI\\BDDcadlm00.mdb");
OleDbDataAdapter MyAdapter = new OleDbDataAdapter("SELECT * FROM cadlm11", MyConnection);
DataSet MyDataSet = new DataSet();
//MyAdapter.SelectCommand = new OleDbCommand("SELECT * FROM cadlm11", MyConnection);

OleDbCommandBuilder MyBuilder = new OleDbCommandBuilder(MyAdapter);

MyAdapter.AcceptChangesDuringFill = false;
MyAdapter.Fill(MyDataSet, "cadlm11");
MyDataSet.Tables["cadlm11"].Rows[1]["valeur 2"] = "1";
MyDataSet.Tables["cadlm11"].Rows[2]["valeur 1"] = "55";
MyDataSet.Tables["cadlm11"].Rows[4]["valeur 3"] = "coco";
MyDataSet.Tables["cadlm11"].Rows[0]["valeur 1"] = "0";
MyDataSet.Tables["cadlm11"].Rows[3]["valeur 1"] = "vive cadlm";


MyAdapter.Update(MyDataSet.Tables[0]);


}
}

merci d'avance

11 réponses

josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
4 juin 2010 à 16:16
le problème c'était au niveau de la configuration de la connexion avec la base de donnée: Project -> Properties -> Settings : ConnectionStrings
3
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
2 juin 2010 à 12:29
Salut. Le message est assez clair, vérifie la syntaxe de tes requêtes.


Only the strong survive !
0
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
2 juin 2010 à 12:47
salut
merci pour la réponse
j' ai bien vérifie mais sa marche toujours pas;
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
2 juin 2010 à 13:33
A koi ressemble tes requêtes. Affiche les dans ton message...

Only the strong survive !
0

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

Posez votre question
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
3 juin 2010 à 10:23
en gros voila ce que je veut faire c'est update mn data set a ma bse de donnée access
j'ai les donnée qui je les modifier dans la data cette mais j'arrive pas a la sauvegarder dans la base et je voix pas ou est le problème;

voila un code qui existe dans un Tutorial C# / CSharp

Updating a DataSource


class MainClass
{
static void Main(string[] args)
{
OleDbConnection MyConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source = c:\Northwind.mdb");
OleDbDataAdapter MyAdapter = new OleDbDataAdapter("SELECT * FROM orders", MyConnection);
DataSet MyDataSet = new DataSet();

MyAdapter.Fill(MyDataSet, "orders");
MyDataSet.Tables[0].Rows[1]["ID"] = "1";

OleDbCommandBuilder MyBuilder = new OleDbCommandBuilder(MyAdapter);

MyAdapter.Update(MyDataSet.Tables[0]);
}
}
pour l'info je suis pas expert en c#
si ta des exemple au des proposition qui peuvent m'aidai a modifier une dataset et la charger dans mabase de donnée access n'hésite pas
merci d'avance
0
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
4 juin 2010 à 15:13
problème résolut
merci pour tt
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
4 juin 2010 à 15:42
Dit nous c'était koi le problème?


Only the strong survive !
0
LaMoucheQuiPete Messages postés 9 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 11 juin 2010
11 juin 2010 à 14:39
bonjour,

Pourrais tu être plus clair stp car j'ai le meme probleme depuis des mois et je l'ai toujours pas résolu...tu pense qu il faut changer les déclaration de connexion et de dataSet comme ceux qui nous propose dans "ajout d'une nouvelle source de donnée"?

ma base de données est SHEM.mdb
a l'ajout il me propose le nom "SHEMConnectionString"
et "SHEMDataSEt"

alors que moi je fais
OleDbConnection conn = new ......BDDpath
private DataSet ds;

et sa me génere un msg d'erreur "erreur de syntaxe INSERT INTO"

quand je clike sur mon boyutton créer un agent "ajout du nom ,pprenom, et niveau"

need help please..

aurevoir
0
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
11 juin 2010 à 15:13
salut
la je comprend pas ce que tu veux dire décrit moi bien tn problème est ce t'arrive a établir la connexion avec ta base de donnée ou nn.
ta base est ce qu'il est inclus dans projet ou bien il quelque part dans disk.
0
LaMoucheQuiPete Messages postés 9 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 11 juin 2010
11 juin 2010 à 15:45
Alors mon Interface s'occupe de rentrer les coordonnées d'un agent ,de pouvoir les rechercher ,en ajouter ,supprimer ou modifier les valeurs dans une base de données Access.
Mon code passe a la compilation alors ma connexion se fait bien mais c'est au moment de la mise a jour avec la méthode update que ça coince...

ma base .mdb est inclus au projet?
voici mon code :

namespace WindowsFormsApplication1
{
public partial class Agent : Form
{
public Agent()
{
InitializeComponent();
}

private OleDbConnection SHEMConnectionString = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\BTS2\ANDRAL\SHEM\ETUD2\Agent\Agent\SHEM.mdb");
private OleDbDataAdapter adapter = new OleDbDataAdapter();
private DataSet ds;

private bool open()
{
try //créer et ouvrir la connexion
{
SHEMConnectionString.Open();
}
catch(OleDbException ex)
{
MessageBox.Show("OledB erreur : {0}",ex.Message);
return false;
}
return true;
}
public bool close()
{
try
{
SHEMConnectionString.Close();
MessageBox.Show("connection fermée");
}
catch (OleDbException ex)
{
MessageBox.Show("Oledb erreur = {0}", ex.Message);
return false;
}
return true;
}

public DataTable getTable(string tableAgent)
{
//crée l'adapter et le remplir avec le dataset
OleDbCommand command = new OleDbCommand("SELECT * from Agent", SHEMConnectionString);
adapter.SelectCommand = command;
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
open();
ds = new DataSet("Agent");
adapter.Fill(ds, "Agent");
DataTable dt = ds.Tables["Agent"];
DataRow dr = ds.Tables["Agent"].NewRow();
dr["Nom"] = "four";
dr["Prenom"] = "Hugues";
dr["Niveau"] = 3;
ds.Tables["Agent"].Rows.Add(dr);
adapter.Update(dt);


close();
return dt;
}








private void comboBoxNom_SelectedIndexChanged(object sender, EventArgs e)
{

}

private void buttonRetour_Click(object sender, EventArgs e)
{
Close();
}

private void buttonCreer_Click(object sender, EventArgs e)
{
//crée l'adapter et le remplir avec le dataset
OleDbCommand command = new OleDbCommand("SELECT * from Agent", SHEMConnectionString);
adapter.SelectCommand = command;
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
open();
ds = new DataSet("Agent");
adapter.Fill(ds, "Agent");
DataTable dt = ds.Tables["Agent"];
DataRow dr = ds.Tables["Agent"].NewRow();
dr["Nom"] = "four";
dr["Prenom"] = "Hugues";
dr["Niveau"] = 3;
ds.Tables["Agent"].Rows.Add(dr);
adapter.Update(dt);



close();
//return dt;

}

Je veux arriver a lorsque j'ouvre ma base de donnée une nouvelle ligne soit créée avec le nouveau nom prenom et niveau...

mais j'ai a chaque fois l'exception OledbExcecption n'as pas été gérée OleDbExceptionError "Erreur de syntaxe dans l'instruction INSERT INTO"
0
josef201 Messages postés 14 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 15 juin 2010
15 juin 2010 à 10:30
bonjour,
en gors je pense que ton programme doit fonctionné,
en fait est ce que tu peu vérifier ta base de donnée Access (est ce que ta défini la clé primaire, et vérifier aussi qu'il ya pas espace dans tes entité)
0
Rejoignez-nous