Probleme code requête parametrée [Résolu]

Signaler
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
bonjour,
je veux réalisé une requete parametrée j'ai ecris le code suivant :
private void button1_Click(object sender, EventArgs e)
{
Add_informations ma_form_Add_informations = new Add_informations();

{
if (textBox_project_name.Text != "")
{
// Chaîne de connexion
string connectString = @"Data Source=RENNDXPRDL2596\SQLEXPRESS;Initial Catalog=hafid;Integrated Security=True";
// Objet connection
SqlConnection connection = new SqlConnection(connectString);
// Ouverture
connection.Open();

SqlCommand command = new SqlCommand("INSERT INTO [Table_Project]([ID_project],[Project_Category],[kick_off_date],[Location]) VALUES(@ID_project,@Project_Category, @Location, @kick_off_date", connection);

// Paramètres
command.Parameters.Add(new SqlParameter("@ID_project", SqlDbType.NVarChar, 50));
command.Parameters.Add(new SqlParameter("@Project_Category", SqlDbType.NVarChar, 50));
command.Parameters.Add(new SqlParameter("@kick_off_date", SqlDbType.NVarChar, 50));
command.Parameters.Add(new SqlParameter("@Location", SqlDbType.NVarChar, 50));

command.Parameters["@ID_project"].Value = textBox_project_name.Text;
command.Parameters["@Project_Category"].Value = comboBox1.Text;
command.Parameters["@Location"].Value = comboBox2.Text;
command.Parameters["@kick_off_date"].Value = textBox_Date.Text;


// Object datareader
SqlDataReader reader = command.ExecuteReader();
Object[] row = null;
while (reader.Read())
{
if (row == null)
row = new Object[reader.FieldCount];
reader.GetValues(row);
for (int i=0; i<row.GetLength(0); i++)
{
if (row[i] != DBNull.Value)
Console.Write(row[i]);
else
Console.Write("NULL");
if (i<row.GetUpperBound(0))
Console.Write("|");
}
Console.WriteLine();
}
// Fermeture reader
reader.Close();
// Fermeture base
connection.Close();

ma_form_Add_informations.ShowDialog();

}
else
{

MessageBox.Show("You must fill the name of project", " Reconfigure", MessageBoxButtons.OK, MessageBoxIcon.Error);

}
}
}
}
}

mais ca marche pas ca bug,
merci de votre aide

16 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
normal : il manque une ) après @kick_off_date !

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
ca marche pas ?
ca bug ?

bah c'est bien...

comment veux-tu qu'on t'aide si tu nous dis pas ce qui ne fonctionne pas !

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
j'ai un message qui me di "Incorrect syntax near '@kick_off_date'".
Messages postés
94
Date d'inscription
lundi 7 juillet 2008
Statut
Membre
Dernière intervention
7 mars 2009
1
Sebmafate, tu es mon Dieu ^^ !!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
comme quoi... j'ai bien fait d'apprendre à lire les message d'erreur :)

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
merci ca marche
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
maintenant j'ai une autre code qui mache pas :


// Chaîne de connexion
string connectString = @"Data Source=RENNDXPRDL2596\SQLEXPRESS;Initial Catalog=hafid;Integrated Security=True";
// Objet connection
SqlConnection connection = new SqlConnection(connectString);
// Ouverture
connection.Open();


SqlCommand command = new SqlCommand("INSERT INTO [table_PPA]([ID_project],[Duration_Estimate_PH_0],[Duration_Estimate_PH_1],[Duration_Estimate_PH_2],[Duration_Estimate_PH_3],[Duration_Estimate_at_Completion],[ETM_PH_0_],[ETM_PH_1_],[ETM_PH_2_],[ETM_PH_3_]) VALUES(@ID_project,@Duration_Estimate_PH_0,@Duration_Estimate_PH_1,@Duration_Estimate_PH_2,@Duration_Estimate_PH_3,@Duration_Estimate_at_Completion,@ETM_PH_0_,@ETM_PH_1_,@ETM_PH_2_,@ETM_PH_3_)", connection);

// Paramètres
command.Parameters.Add(new SqlParameter("@ID_project", SqlDbType.NVarChar, 50));
command.Parameters.Add(new SqlParameter("@Duration_Estimate_PH_0", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@Duration_Estimate_PH_1", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@Duration_Estimate_PH_2", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@Duration_Estimate_PH_3", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@Duration_Estimate_at_Completion", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@ETM_PH_0_", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@ETM_PH_1_", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@ETM_PH_2_", SqlDbType.Float));
command.Parameters.Add(new SqlParameter("@ETM_PH_3_", SqlDbType.Float));


command.Parameters["@ID_project"].Value = textBox_project_name.Text;
command.Parameters["@Duration_Estimate_PH_0"].Value = textBox_Duration_Estimate_PH_0.Text;
command.Parameters["@Duration_Estimate_PH_1"].Value = textBox_Duration_Estimate_PH_1.Text;
command.Parameters["@Duration_Estimate_PH_2"].Value = textBox_Duration_Estimate_PH_2.Text;
command.Parameters["@Duration_Estimate_PH_3"].Value = textBox_Duration_Estimate_PH_3.Text;
command.Parameters["@Duration_Estimate_at_Completion"].Value = textBox_Duration_Dstimate_at_Completion.Text;
command.Parameters["@ETM_PH_0_"].Value = textBox_ETM_Phase_0.Text;
command.Parameters["@ETM_PH_1_"].Value = textBox_ETM_Phase_1.Text;
command.Parameters["@ETM_PH_2_"].Value = textBox_ETM_Phase_2.Text;
command.Parameters["@ETM_PH_3_"].Value = textBox_ETM_Phase_3.Text;


command.Parameters["@Duration_Estimate_PH_0"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_0.Text);
command.Parameters["@Duration_Estimate_PH_1"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_1.Text);
command.Parameters["@Duration_Estimate_PH_2"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_2.Text);
command.Parameters["@Duration_Estimate_PH_3"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_3.Text);
command.Parameters["@Duration_Estimate_at_Completion"].Value = Convert.ToDouble (textBox_Duration_Dstimate_at_Completion.Text);
command.Parameters["@ETM_PH_0_"].Value = Convert.ToDouble (textBox_ETM_Phase_0.Text);
command.Parameters["@ETM_PH_1_"].Value = Convert.ToDouble(textBox_ETM_Phase_1.Text);
command.Parameters["@ETM_PH_2_"].Value = Convert.ToDouble(textBox_ETM_Phase_2.Text);
command.Parameters["@ETM_PH_3_"].Value = Convert.ToDouble(textBox_ETM_Phase_3.Text);

command.ExecuteNonQuery();


}
}
malgré ca ca marche pas j'au
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
il manque un bout de ton message ?

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
le code est complet
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
et le message d'erreur ?

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
au debut j avais ce message

Failed to convert parameter value from a String to a Double.

en suite j'ai rajouté ce code pour faire un convert:


command.Parameters["@Duration_Estimate_PH_0"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_0.Text);
command.Parameters["@Duration_Estimate_PH_1"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_1.Text);
command.Parameters["@Duration_Estimate_PH_2"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_2.Text);
command.Parameters["@Duration_Estimate_PH_3"].Value = Convert.ToDouble(textBox_Duration_Estimate_PH_3.Text);
command.Parameters["@Duration_Estimate_at_Completion"].Value = Convert.ToDouble (textBox_Duration_Dstimate_at_Completion.Text);
command.Parameters["@ETM_PH_0_"].Value = Convert.ToDouble (textBox_ETM_Phase_0.Text);
command.Parameters["@ETM_PH_1_"].Value = Convert.ToDouble(textBox_ETM_Phase_1.Text);
command.Parameters["@ETM_PH_2_"].Value = Convert.ToDouble(textBox_ETM_Phase_2.Text);
command.Parameters["@ETM_PH_3_"].Value = Convert.ToDouble(textBox_ETM_Phase_3.Text);

et l aje message .

Input string was not in a correct format.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
mouaip...

en fait, il faut que tu valides la saisie de tes textboxes !
Plutot qu'un Convert.ToDouble utilise Double.TryParse...

Mais avant tout, il faut vraiment etre sur que l'utilisation à entré des chiffres dans les textboxes, sinon, ça plantera.

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
comment je dois faire ca sat ,
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
a tu une idée stp?
Messages postés
42
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 août 2008
1
quelqu'in pourra m aider svp!!!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
hum... merci d'etre patient.

ici nous sommes tous volontaires et nous répondons lorsque nous avons le temps !
Tu as aussi le droit de te creuser la tete !

Maintenant, pour t'aider à résoudre ton problème : il existe 2 solutions :
1. Soit tu vérifies avant d'utiliser tes variables qu'elles sont du bon type
2. Soit tu utilises un Validator qui validera automatiquement la saisie de l'utilisateur (http://www.csharpfr.com/codes/WINDOWS-FORMS-VALIDATORS_43575.aspx)

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]