Command INSERT

yannickiwi Messages postés 22 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 décembre 2008 - 17 janv. 2008 à 09:08
yannickiwi Messages postés 22 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 décembre 2008 - 18 janv. 2008 à 10:26
Bonjour,

je souhaite développer 1 application utilisant mysql et c#. J'ai réussis à me connecter. Il me faut maintenant envoyé 2 textfield dans ma base de donnée.

J'ai écris une partie du code:

            public Boolean insertDonne()
            {
                string sName = txtName.Text;
                string sFirstName = txtFirstName.Text;
                SqlCommand insertDonnee = new SqlCommand("INSERT INTO contact VALUES('', name, firstName);");

                try
                {

                    toolStripStatusLabel1.Text = "Données ajoutées avec succès.";

                    return true;
                }
                catch (MySqlException myEx)
                {
                    toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : d'exécuter la requête.";
                    return false;
                }
            }


Mes questions:

- Ou placer ma fonction? dans le bouton dans la form? Si dans la form, comment appeller la fonction dans le bouton?

- Ma command d'insertion est-elle complète? Si non, que me faut-il ajouté et ou?

Je vous remercie de l'attention porté à mon message et vous souhaite une excellente journée.

Meilleures salutation,

Yannick

4 réponses

yannickiwi Messages postés 22 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 décembre 2008
17 janv. 2008 à 15:01
J'ai avancer un peu, voici mon code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using MySql.Data.MySqlClient;


namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private MySqlConnection ConnectionRessource;

public Form1()
{
InitializeComponent();
SqlConnection();
}
public Boolean SqlConnection()
{
string DBName = "courtage";
string Server = "localhost";
string Login = "root";
string Password = "";

string connectionString = "Server=" + Server +
";Database=" + DBName +
";User ID=" + Login +
";Password=" + Password + ";";
try
{
ConnectionRessource = new MySqlConnection(connectionString);
toolStripStatusLabel1.Text = "Ouverture de la connection à la table" + DBName + ".";
ConnectionRessource.Open();
toolStripStatusLabel1.Text = "connection établie avec succès à la table " + DBName + ".";

return true;
}
catch (MySqlException myEx)
{
toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : Impossible de se connecter à la base de donnée.";

return false;
}

}

public Boolean insertDonnee()
{
string sName = txtName.Text;
string sFirstName = txtFirstName.Text;
SqlCommand insertDonnee = new SqlCommand("INSERT INTO contact VALUES('', name, firstName);");


try
{
ConnectionRessource.Open();
insertDonnee.ExecuteNonQuery();
toolStripStatusLabel1.Text = "Données ajoutées avec succès.";
insertDonnee.Connection.Close();

return true;
}
catch (MySqlException myEx)
{
toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : Impossible d'exécuter la requête.";
return false;
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void btnInsert_Click(object sender, EventArgs e)
{
insertDonnee();
}
}
}


Le soucis est qu'il me dit:
The connection is already open.
en me surlignant en jaune la ligne:
ConnectionRessource.Open();

Si je la supprime:
ExecuteNonQuery : la propriété Connection n'a pas été initialisée.
sur la ligne:
insertDonnee.ExecuteNonQuery();

Si quelqu'un à une solution :}
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
18 janv. 2008 à 07:51
Hello,

C'est normal, tu as déjà ouvert ta connection avec le constructeur de ta Form (méthode SqlConnection()).

Par contre, je vois déjà de futurs problèmes avec ta requête.
Tu utilise des SqlConnection, SqlCommand,... Ces classes sont valables pour travailler avec SqlServer.
Si tu veux travailler avec MySql, sauf erreur de ma part, tu peux enlever le "using System.Data.SqlClient;" et remplacer tout tes SqlXXX par MySqlXXX.

Encore une chose, il faut croire qu'on ne le répéte jamais assez, mais utilise des requêtes paramétrées !

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
yannickiwi Messages postés 22 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 décembre 2008
18 janv. 2008 à 10:15
Bonjour,

Merci pour ta réponse j'ai suivis tes conseils et le tutoriel(Merci).

Voici mon code actuel:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using MySql.Data.MySqlClient;


namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private MySqlConnection ConnectionRessource;
private MySqlConnection connectionSelect;

public Form1()
{
InitializeComponent();
SqlConnection();
}
public Boolean SqlConnection()
{
string DBName = "courtage";
string Server = "localhost";
string Login = "root";
string Password = "";

string connectionString = "Server=" + Server +
";Database=" + DBName +
";User ID=" + Login +
";Password=" + Password + ";";
try
{
ConnectionRessource = new MySqlConnection(connectionString);
toolStripStatusLabel1.Text = "Ouverture de la connection à la table" + DBName + ".";
ConnectionRessource.Open();
toolStripStatusLabel1.Text = "connection établie avec succès à la table " + DBName + ".";

return true;
}
catch (MySqlException myEx)
{
toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : Impossible de se connecter à la base de donnée.";

return false;
}

}

/*public Boolean selectClient()
{
SqlConnection(); //Connection à la database
//Création de la commande
MySqlCommand connectionSelect = new MySqlCommand("SELECT * from contact"); //Commande
connectionSelect.ExecuteReader(); //Lecteur de la commande
try //Procédure de test
{
dataGridView1.Rows.Add(connectionSelect); //Ici une faute - Lecture des données __ET__ affichage dans les ROWS!
toolStripStatusLabel1.Text = "Liste des contacts chargé avec succès"; //Informations a l'utilisateur du succès

return true;
}
catch (MySqlException myEx) //Erreur
{
toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : Impossible de lister les contacts"; //Information à l'utilisateur de l'erreur

return false;
}
}*/

public Boolean insertDonnee()
{
string sName = txtName.Text;
string sFirstName = txtFirstName.Text;

MySqlParameter paramID = new MySqlParameter("@id", MySqlDbType.Int16);
paramID.Value = "";

MySqlParameter paramName = new MySqlParameter("@name", MySqlDbType.VarChar);
paramName.Value = txtName.Text;

MySqlParameter paramFirstName = new MySqlParameter("@firstName", MySqlDbType.VarChar);
paramFirstName.Value = txtFirstName.Text;

string cmdInsert = string.Format("INSERT INTO contact(id, name, firstName) VALUES({0},{1},{2})",

paramID.ParameterName, paramName.ParameterName,
paramFirstName.ParameterName);
MySqlCommand cmd = new MySqlCommand(cmdInsert.ToString(), ConnectionRessource);

cmd.Parameters.Add(paramID);
cmd.Parameters.Add(paramName);
cmd.Parameters.Add(paramFirstName);


try
{
cmd.ExecuteNonQuery();
toolStripStatusLabel1.Text = "Donnée ajouté avec succès à la table.";


return true;

}
catch (MySqlException myEx)
{
MessageBox.Show("Error: " + myEx + "Impossible d'ajouté les données");

return false;
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void btnInsert_Click(object sender, EventArgs e)
{
insertDonnee();
}
}
}


Ca ne fonctionnais pas, Il m'ajoutait pas les données et je ne pouvais voir le message d'erreur dans le toolstatusbox machin la. Ducoup, j'ai créé un msgBox(preuvent de mon intelligence xD).

Voici l'erreur: http://img262.imageshack.us/my.php?image=errormysqlow6.jpg

En te remerciant de ton aide et de l'attention porté à mon message, je te souhaite une excellente journée.

Meilleures salutations,

Yannick
0
yannickiwi Messages postés 22 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 décembre 2008
18 janv. 2008 à 10:26
Y a pas un bouton editer sur le forum?

Modif du code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
using MySql.Data.MySqlClient;


namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private MySqlConnection ConnectionRessource;
private MySqlConnection connectionSelect;

public Form1()
{
InitializeComponent();
SqlConnection();
}
public Boolean SqlConnection()
{
string DBName = "courtage";
string Server = "localhost";
string Login = "root";
string Password = "";

string connectionString = "Server=" + Server +
";Database=" + DBName +
";User ID=" + Login +
";Password=" + Password + ";";
try
{
ConnectionRessource = new MySqlConnection(connectionString);
toolStripStatusLabel1.Text = "Ouverture de la connection à la table" + DBName + ".";
ConnectionRessource.Open();
toolStripStatusLabel1.Text = "connection établie avec succès à la table " + DBName + ".";

return true;
}
catch (MySqlException myEx)
{
toolStripStatusLabel1.Text = "Error " + myEx.GetType() + " : Impossible de se connecter à la base de donnée.";

return false;
}

}

public Boolean insertDonnee()
{
string sName = txtName.Text;
string sFirstName = txtFirstName.Text;

MySqlParameter paramID = new MySqlParameter("@id", MySqlDbType.Int16);
paramID.Value = "";

MySqlParameter paramName = new MySqlParameter("@name", MySqlDbType.VarChar);
paramName.Value = sName;

MySqlParameter paramFirstName = new MySqlParameter("@firstName", MySqlDbType.VarChar);
paramFirstName.Value = sFirstName;

string cmdInsert = string.Format("INSERT INTO contact(id, name, firstName) VALUES({0},{1},{2})",

paramID.ParameterName, paramName.ParameterName,
paramFirstName.ParameterName);
MySqlCommand cmd = new MySqlCommand(cmdInsert.ToString(), ConnectionRessource);

cmd.Parameters.Add(paramID);
cmd.Parameters.Add(paramName);
cmd.Parameters.Add(paramFirstName);


try
{
cmd.ExecuteNonQuery();
toolStripStatusLabel1.Text = "Donnée ajouté avec succès à la table.";


return true;

}
catch (MySqlException myEx)
{
MessageBox.Show("Error: " + myEx + "Impossible d'ajouté les données");

return false;
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void btnInsert_Click(object sender, EventArgs e)
{
insertDonnee();
}
}
}


Toujours la meme erreur.
0
Rejoignez-nous