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

Signaler
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010
-
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

Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

le problème c'était au niveau de la configuration de la connexion avec la base de donnée: Project -> Properties -> Settings : ConnectionStrings
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
6
Salut. Le message est assez clair, vérifie la syntaxe de tes requêtes.


Only the strong survive !
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

salut
merci pour la réponse
j' ai bien vérifie mais sa marche toujours pas;
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
6
A koi ressemble tes requêtes. Affiche les dans ton message...

Only the strong survive !
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

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
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

problème résolut
merci pour tt
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
6
Dit nous c'était koi le problème?


Only the strong survive !
Messages postés
9
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
11 juin 2010

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
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

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.
Messages postés
9
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
11 juin 2010

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"
Messages postés
14
Date d'inscription
mercredi 17 janvier 2007
Statut
Membre
Dernière intervention
15 juin 2010

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é)