Enregistrement dans la base de données avec un DataSet [Résolu]

leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 18 nov. 2005 à 11:40 - Dernière réponse : leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention
- 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);
Afficher la suite 

12 réponses

Répondre au sujet
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 21 nov. 2005 à 11:35
+3
Utile
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!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de leviz
cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention - 18 nov. 2005 à 13:21
0
Utile
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
Commenter la réponse de cs_Crazyht
crougni 18 Messages postés mardi 20 septembre 2005Date d'inscription 3 mars 2009 Dernière intervention - 18 nov. 2005 à 13:23
0
Utile
Salut leviz,



un chtit aperçu de ton erreur non ?
Commenter la réponse de crougni
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 18 nov. 2005 à 13:33
0
Utile
Je comprends un peu mieux comment faire! J'essais et je vous redonnerais de mes nouvelles. A+
Commenter la réponse de leviz
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 18 nov. 2005 à 14:23
0
Utile
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();
Commenter la réponse de leviz
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 18 nov. 2005 à 14:31
0
Utile
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();
Commenter la réponse de leviz
cs_Crazyht 1524 Messages postés mardi 18 décembre 2001Date d'inscription 21 août 2010 Dernière intervention - 18 nov. 2005 à 16:39
0
Utile
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

<
Commenter la réponse de cs_Crazyht
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 18 nov. 2005 à 21:21
0
Utile
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!
Commenter la réponse de leviz
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 18 nov. 2005 à 23:23
0
Utile
Je pense qu'il est important de dire laquelle et de donner les informations qui l'accompagne :-)

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

A++

CrazyHT
MVP Visual C#.NET

<
Commenter la réponse de cs_Crazyht
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 21 nov. 2005 à 10:10
0
Utile
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.
Commenter la réponse de leviz
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 21 nov. 2005 à 10:57
0
Utile
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?
Commenter la réponse de leviz

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.