Insertion dans une base de données!

Résolu
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011 - 12 mars 2009 à 14:32
cs_YbenAli Messages postés 11 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 22 mars 2009 - 15 mars 2009 à 08:24
Bonjour,

Débutante en C# je cherche à ajouter un enregistrement dans ma base de données depuis un formulaire de saisie je procède de cette manière :

OleDbCommand cmdAdd = new OleDbCommand(
            "INSERT INTO Tcontact (Nom, Prenom, Email, Url, comment, img) " +
            "VALUES (" + txtName.Text + "," + txtFirstName.Text + "," + txtMail.Text + "," + txtUrl.Text + "," + txtComment.Text + "," + txtPicture.Text + ")", cx);
            adapTContact.InsertCommand = cmdAdd;

cx est ma chaîne de connexion

Cependant lorsque j'exécute ce code rien ne se passe, ni ajout dans la base de données, ni dans la listview que j'utilise pour afficher mes enregistrements. Où se situe mon erreur?

Merci d'avance

4 réponses

imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
12 mars 2009 à 19:27
On peut constater que tu utilise un DataSet. Si c'est vraiment le cas, tu dois au contraire faire ton insertion dans la table de ton DataSet :

DataRow newRow = TonDataSet.Tables["Tcontact"].NewRow;
//ensuite tu fais les affectations recquises
newRow["Nom"] = taValeur;
.....
.....
newRow["img"] = taValeur;

TonDataSet.Tables["Tcontact"].Rows.Add(newRow);

A ce niveau, tes données sont en mémoire dans le DataSet. Pour actualiser ta base de données tu fais appel à la fonction "Update" de ton DataAdapter comme suit:

adapTContact.Update(TonDataSet)

Dans l'instruction "adapTContact.InsertCommand = cmdAdd;" tu dis en fait à la fonction "Update" de "adapTContact" d'utiliser cette command pour mettre à jour ton DataSet par rapport à ta base de données.

Happy Coding.

Only the strong survive !
3
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
13 mars 2009 à 10:10
J'ai modifié mon code, le problème est que cela s'ajoute bien dans la ListView mais pas dans la base de données :

// Création de la nouvelle ligne
            DataRow newLigne = dtSet.Tables["TContact"].NewRow();
           
           
                newLigne[1] = txtName.Text;
                newLigne[2] = txtFirstName.Text;
                newLigne[3] = txtMail.Text;
                newLigne[4] = txtUrl.Text;
                newLigne[5] = txtComment.Text;
                newLigne[6] = txtPicture.Text;

                dtSet.Tables["TContact"].Rows.Add(newLigne);

                // Création CommandBuilder
                //(génère automatiquement l'update entre le dataSet et la base de donnée

                OleDbCommandBuilder cmdBuild = new OleDbCommandBuilder(adapTContact);
                adapTContact.InsertCommand = cmdBuild.GetInsertCommand();
                adapTContact.Update(dtSet, "Tcontact") ;
           
            connexion();
            cx.Close();

Qu'est ce que j'oublie de faire?
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
13 mars 2009 à 12:56
Le problème se trouve au niveau de ta fonction "connexion". Elle n'est pas au bon endroit. Avant de faire une mise à jour, tu dois ouvrir la connexion avant; et ensuite la fermer. Donc appel ta fonction avant le bloc d'instruction:

 
                OleDbCommandBuilder cmdBuild = new OleDbCommandBuilder(adapTContact);
                adapTContact.InsertCommand = cmdBuild.GetInsertCommand();
                adapTContact.Update(dtSet, "Tcontact") ;

Only the strong survive !
0
cs_YbenAli Messages postés 11 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 22 mars 2009
15 mars 2009 à 08:24
bonjour:
Essayer ca..

CnxString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " + CheminBase;
OleDbConnection Cnx = new OleDbConnection(CnxString);
//ouverture de la connexion
Cnx.Open();

OleDbCommand dtCmd = new OleDbCommand(Sql);
OleDbConnection Cnx = new OleDbConnection(CnxString);
dtCmd.Connection = Cnx;
OleDbDataAdapter dtAdapter = new OleDbDataAdapter(dtCmd);
DataSet dtSet = new DataSet("Nom_Table");
dtAdapter.Fill(dtSet, "Nom_Table");
DataRow dtRow = dtSet.Tables["Nom_Table"].NewRow();
//Creer les lignes dans la Table
dtRow ["Nom_Champs1"] = Text1.Text ;
dtRow ["Nom_Champs2"] = Text2.Text ;

//Ajouter les lignes
dtSet.Tables["Nom_Table"].Rows.Add(dtRow);
OleDbCommandBuilder dtCmdB = new OleDbCommandBuilder(dtAdapter);
dtAdapter.Update (dtSet, "Nom_Table");

//Afficher le resultat dans une DataGride
dataGrid1.SetDataBinding(dtSet, "Nom_Table");
0
Rejoignez-nous