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

josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 28 mai 2010 à 16:00 - Dernière réponse : josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 4 juin 2010 à 16:16
3
Merci
le problème c'était au niveau de la configuration de la connexion avec la base de donnée: Project -> Properties -> Settings : ConnectionStrings

Merci josef201 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de josef201
imothepe_33 168 Messages postés mardi 27 juillet 2004Date d'inscription 28 novembre 2012 Dernière intervention - 2 juin 2010 à 12:29
0
Merci
Salut. Le message est assez clair, vérifie la syntaxe de tes requêtes.


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

Only the strong survive !
Commenter la réponse de imothepe_33
josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 3 juin 2010 à 10:23
0
Merci
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
Commenter la réponse de josef201
josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 4 juin 2010 à 15:13
0
Merci
problème résolut
merci pour tt
Commenter la réponse de josef201
imothepe_33 168 Messages postés mardi 27 juillet 2004Date d'inscription 28 novembre 2012 Dernière intervention - 4 juin 2010 à 15:42
0
Merci
Dit nous c'était koi le problème?


Only the strong survive !
Commenter la réponse de imothepe_33
LaMoucheQuiPete 9 Messages postés lundi 19 octobre 2009Date d'inscription 11 juin 2010 Dernière intervention - 11 juin 2010 à 14:39
0
Merci
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
Commenter la réponse de LaMoucheQuiPete
josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 11 juin 2010 à 15:13
0
Merci
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.
Commenter la réponse de josef201
LaMoucheQuiPete 9 Messages postés lundi 19 octobre 2009Date d'inscription 11 juin 2010 Dernière intervention - 11 juin 2010 à 15:45
0
Merci
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"
Commenter la réponse de LaMoucheQuiPete
josef201 14 Messages postés mercredi 17 janvier 2007Date d'inscription 15 juin 2010 Dernière intervention - 15 juin 2010 à 10:30
0
Merci
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é)
Commenter la réponse de josef201

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.