Enregistrement dans la base de données avec un DataSet

Résolu
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008 - 18 nov. 2005 à 11:40
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008 - 21 nov. 2005 à 11:35
Bonjour!

Je suis un novice en C#. J'éprouve quelques difficulté à sauvegarder
les changements amenés dans mon DataSet dans ma base de données. Une
erreur apparait lorsque j'invoque mon service web.



Ce que je désire, c'est modifié une cellule de mon DataSet et ensuite
faire un Update pour enregister mes données dans ma base de données.



Voici le code:




MyDataAdapter = new MySqlDataAdapter("Select * FROM test_viz", MyConnexion);

DataSet MyDataSet = new DataSet();

MyDataAdapter.Fill(MyDataSet, "test_viz");



string NewValue = "Marcello";

DataRow MyRow = MyDataSet.Tables["test_viz"].Rows[0];



MyRow["prenom"] = NewValue;

MyDataSet.Tables["test_viz"].Rows.InsertAt(MyRow, 2);



MyDataAdapter.Update(MyDataSet);

12 réponses

leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
21 nov. 2005 à 11:35
J'ai trouvé la solution à mon problème!



Voici le code avec quelques commentaires :



[WebMethod]

public string testValeur()

{



//On donne les paramètres de connections pour la base de données

string MyConnexionString =
String.Format("server=localhost;user id=root; password=Diplome05;



database=test; pooling=false");



MyConnexion = new MySqlConnection(MyConnexionString);

MyConnexion.Open();



//On donne la requête SQL pour obtenir les informations qui seront insérer par la suite dans le DataSet

MyDataAdapter = new MySqlDataAdapter("Select * FROM test_viz", MyConnexion);



DataSet MyDataSet = new DataSet();



/*
Avant d'envoyer la mise à jour à la base de données, il faut configurer les objets InsertCommand , UpdateCommand et DeleteCommand pour ajuster les modifications avec la base de données. Il est possible d'utiliser l'objet SqlCommandBuilder pour les générer automatiquement : */



MySqlCommandBuilder
myDataRowsCommandBuilder = new MySqlCommandBuilder(MyDataAdapter);



//On remplie notre DataSet avec les données

MyDataAdapter.Fill(MyDataSet, "test_viz");



//Modification d'une cellules dans le DataSet

MyDataSet.Tables["test_viz"].Rows[1]["prenom"] = "Thibaud";



//On charge notre DataSet modifié dans la base de données

MyDataAdapter.Update(MyDataSet, "test_viz");



MyConnexion.Close();



return "Test est passe";



}



Merci encore à tous ceux qui m'on aider!
3
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 nov. 2005 à 13:21
Pour te servir de la methode Update d'un dataadapter il te faut definir la SqlCommand d'insert et d'update (Voir les propriétés qui de tête doivent ressemblées a UpdateCommand et InsertCommand )

A++

CrazyHT
MVP Visual C#.NET
0
crougni Messages postés 18 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 3 mars 2009
18 nov. 2005 à 13:23
Salut leviz,



un chtit aperçu de ton erreur non ?
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
18 nov. 2005 à 13:33
Je comprends un peu mieux comment faire! J'essais et je vous redonnerais de mes nouvelles. A+
0

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

Posez votre question
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
18 nov. 2005 à 14:23
Je n'y arrive toujours pas! Il y a encore des erreurs.

Si quelqu'un peut me dire ou je fais l'erreur : (Pour rappel: je
possède une table dans une base de données MySql qui se nomme
"test_viz" et cette table se compose de trois champ "id", "nom" et
"prenom"). Il y a déjà des donnée préenregistrer mais je désire
modifier l'une des données de ma base de données: c'est le champs
"prenom" de l'id 2 que j'aimerais pouvoir remplacer par un autre
prénom.)



Voici mon code :





string MyConnexionString =
String.Format("server=localhost;user id=root; password=Diplome05;
database=test;











pooling=false");



MyConnexion = new MySqlConnection(MyConnexionString);

MyConnexion.Open();



MyDataAdapter = new MySqlDataAdapter("Select * FROM test_viz", MyConnexion);



MyDataAdapter.TableMappings.Add("test_viz","test");




MyDataAdapter.UpdateCommand new MySqlCommand("UPDATE test_viz SET nom
@nom, prenom =


@prenom, WHERE id = @id ",
MyConnexion);


MyDataAdapter.UpdateCommand.Parameters.Add("@prenom",MySqlDbType.String,
45, "prenom");

MyDataAdapter.UpdateCommand.Parameters.Add("@nom", MySqlDbType.String, 45, "nom");

MyDataAdapter.UpdateCommand.Parameters.Add("@id",MySqlDbType.Int32,4, "id");



DataSet MyDataSet = new DataSet();



MyDataAdapter.Update(MyDataSet, "test_viz");



//On récupère les données du DataSet

MyDataAdapter.Update(MyDataSet, "test_viz");



MyDataSet.AcceptChanges();

MyDataSet.Clear();

MyDataAdapter.Fill(MyDataSet, "test_viz");




string coo1 =
MyDataSet.Tables["test_viz"].Rows[1].ItemArray[2].ToString();



MyConnexion.Close();
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
18 nov. 2005 à 14:31
J'ai pas vu deux erreurs un peux stupide mais ca ne
marche toujours pas dans le code précédent! que j'ai corrigé dans le
code suivant.





Nouveau code:



string MyConnexionString =
String.Format("server=localhost;user id=root; password=Diplome05;
database=test; pooling=false");



MyConnexion = new MySqlConnection(MyConnexionString);

MyConnexion.Open();



MyDataAdapter = new MySqlDataAdapter("Select * FROM test_viz", MyConnexion);



MyDataAdapter.TableMappings.Add("test_viz","test");



MyDataAdapter.UpdateCommand
new MySqlCommand("UPDATE test_viz SET nom @nom, prenom = @prenom,
WHERE id






= @id ",
MyConnexion);


MyDataAdapter.UpdateCommand.Parameters.Add("@prenom",MySqlDbType.String,
45, "prenom");

MyDataAdapter.UpdateCommand.Parameters.Add("@nom", MySqlDbType.String, 45, "nom");

MyDataAdapter.UpdateCommand.Parameters.Add("@id",MySqlDbType.Int32,4, "id");



DataSet MyDataSet = new DataSet();



MyDataAdapter.Update(MyDataSet, "test_viz");



MyDataSet.AcceptChanges();

MyDataSet.Clear();

MyDataAdapter.Fill(MyDataSet, "test_viz");



//On récupère les données du DataSet


string coo1 =
MyDataSet.Tables["test_viz"].Rows[1].ItemArray[2].ToString();



MyConnexion.Close();
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 nov. 2005 à 16:39
Et tu as une exception ou ca fait juste rien ?

Y a t il des nouvelles lignes ou tu ne fait que modifier l'existant ?

A++

CrazyHT
MVP Visual C#.NET

<
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
18 nov. 2005 à 21:21
J'ai juste supprimer deux lignes par rapport au code précédent.
Lorsque je compile et que j'invoque mon service web, j'ai une exception!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 nov. 2005 à 23:23
Je pense qu'il est important de dire laquelle et de donner les informations qui l'accompagne :-)

/*
coq
MVP Visual C#
*/
0
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
19 nov. 2005 à 00:04
De plus si tu efface des lignes il faut renseigné la propriete DeleteCommand

A++

CrazyHT
MVP Visual C#.NET

<
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
21 nov. 2005 à 10:10
En invoquant le dernier service web que j'ai envoyé, j'ai le message d'erreur suivant :



System.NullReferenceException: Object reference not set to an instance of an object.
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
21 nov. 2005 à 10:57
Je vais poser ma question autrement :

je reçois un DataSet en paramètre et dans ce
DataSet, j'ai une table contenant des données. J'aimerais par exemple
modifier la colonne 3 de la ligne 2 de ce DataSet. Finallement,
j'aimerais faire une mise à jour de ma base de données par rapport au
modification apporté a mon DataSet.



Es-ce que quelqu'un a une solution à me proposer?
0
Rejoignez-nous