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

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

Votre réponse

12 réponses

Meilleure réponse
Messages postés
68
Date d'inscription
jeudi 20 octobre 2005
Dernière intervention
10 juin 2008
- 21 nov. 2005 à 11:35
3
Merci
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!

Merci leviz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de leviz
Messages postés
1523
Date d'inscription
mardi 18 décembre 2001
Dernière intervention
21 août 2010
- 18 nov. 2005 à 13:21
0
Merci
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
Messages postés
18
Date d'inscription
mardi 20 septembre 2005
Dernière intervention
3 mars 2009
- 18 nov. 2005 à 13:23
0
Merci
Salut leviz,



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