Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009
-
24 août 2007 à 09:26
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009
-
26 août 2007 à 01:13
Bonjour,
Voila, j'ai une base de donnée Access avec laquelle je veux travailler, donc INSERT,DELETE, etc....
J'ai donc établit une connexion à cette base à l'aide de l'outil "Ajouter une nouvelle source de données" de VS2005, il ma créé un DataSet.
Ne connaissant pas ce composant (DataSet), je créé un objet avec ce DataSet et je m'apperçoit rapidement que je peux faire:
monDataSet.matable.AddRow(), alors je me dit: "Super ça va être facile de travailler avec ma BDD!".
Seulement, le AddRow() n'ajoute rien du tout à ma base Access :s
Donc ma question est: Comment utiliser un DataSet?, ou plus généralement: Comment communiquer avec une base de donnée Access?
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 24 août 2007 à 10:11
oops... j'm'a trompé... la méthode Update n'est pas sur la DataTable mais sur le DataAdapter.
La méthode AcceptChange sert à autre chose... donc à ne pas utiliser dans ton cas.
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 24 août 2007 à 10:17
non non... si tu utilises .net 2.0, les DataTableAdapter sont automatiquement créé.
Regarde ton code... tu as dû à moment ou un autre faire Fill() pour remplir tes tables... et bien, il suffit de faire la même chose, mais avec Update()
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 24 août 2007 à 10:29
Ups... euh... non je n'ai fait à aucun moment un Fill... et j'ai rempli aucun tableau!
Mais j'ai mis en place un DataTableAdapter:
monDataSetTableAdapaters.matableAdapter tableAdapater = new monDataSetTableAdapaters.matableAdapter();
tableAdapater.Update(monDataSet);
Mais chose étrange... lorsqu'il fait ce Update... il sort de la fonction :s, par exemple si juste après cette Update() je fais un int i = 0, et bien je m'aperçoit qu'il ne passera pas par cette ligne!!! :s
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 24 août 2007 à 10:41
Bon... on reprend au début...
Tu as importé dans ton problème ta base de données Access.
Visual Studio a créé un certains nombre de classe pour l'acces aux données. Parmis elles, tu trouves un dataset typé et des DataTableAdapters.
Chaque DataTableAdapter doit contenir 4 requêtes : Select (SelectCommand), Updale (UpdateCommand), Insert (InsertCommand) et Delete (DeleteCommand) qui correspondent aux différents types d'opérations que tu peux faire sur tes tables. En gros, au moment où tu vas appeler la méthode Update du DataTableAdapter, ADO.net va regarder chaque ligne et appliquer la commande nécessaire.
Normalement, dans ton code (peut-être dans le .designer.cs) tu dois appeler la méthode Fill du DataTableAdapter pour "remplir" ta DataTable... et donc, il faut que tu réutilises ce même DataTableAdapter pour faire l'update.
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 24 août 2007 à 11:24
Pour mes DataTableAdapter, j'ai bien .Update(colum1,colum2,etc...) pareil pour Insert et Delete... mais étrangement j'ai pas le Select
Pour .Fill, je l'ai bien dans le monDataSet.designer.cs.
Je l'ai suivit au debuger quand il fait le Update() et il passe uniquement dans la propriété Adapter... et rien d'autre... je sais pas si ça peut-t'aider... mais en tout cas il ne fait toujours pas le code que je met juste après le Update()
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 24 août 2007 à 11:28
s'il ne passe pas dans le code après, c'est qu'il y a une exception de levé (erreur)... donc, soit ta requête n'est pas bonne... soit tu as un problème ailleur...
Tuizi
Messages postés144Date d'inscriptionsamedi 21 octobre 2000StatutMembreDernière intervention 7 mai 2009 24 août 2007 à 12:00
Oui j'ai bien pensé à une exception, mais en debug aucun erreur et je n'ai aucun try catch!
J'ai tout de meme mis mon Update() dans un Try Catch... et là... miracle!!! j'ai bien une exception!!! qui me dit: "Le paramètre ?_3 n'a pas de valeur par défaut." et la, ba il continue bien mon code!
Bon maintenant, si je m'interesse à ce message d'erreur je vois pas trop de quoi ça peut venir, ma fonction AddRow() prend bien 5 String et je lui fournit bien 5 String...
Mais j'ai peut-etre une piste... j'ai modifier le nom de certain champ dans ma base de donnée... et du coup le DataSet n'a pas du être mis à jour! Faut-il que je supprime mon DataSet et que je le recréé? ou il y a un outils pour le mettre à jour?
Bon sinon, j'ai refait le DataSet, et plus d'Exception . Mais.... lorsque j'ouvre mon .mbd, ma base de donnée et vide , il n'y a pas quelque chose à faire en plus?