merybaha
Messages postés13Date d'inscriptionvendredi 20 avril 2012StatutMembreDernière intervention 5 juin 2012
-
21 mai 2012 à 21:54
Tupad
Messages postés239Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention27 août 2012
-
22 mai 2012 à 10:19
bonjour tout le monde,
j'ai un petit problème quand j'utilise deux requêtes SQL ,une de sélection et une autre de mise à jour en même temps ça ne marche pas et si je supprime une ça marche voilà le code:
private void activer_Click(object sender, EventArgs e)
{
String url = "SERVER=localhost;DATABASE=stage;UID=root;PASSWORD= ";
MySqlConnection con = new MySqlConnection(url);
MySqlDataReader dr;
try
{
con.Open();
string b = "Activé";
string cmd1 = "UPDATE comptes SET Etat='" + b + "' WHERE Id='" + act.Text + "'AND Etat<>'" + b + "'";
string cmd2 = "select * from comptes where Id='" + act.Text + "'";
MySqlCommand cmde2 = new MySqlCommand(cmd2, con);
MySqlCommand cmde1 = new MySqlCommand(cmd1, con);
if (act.Text.Trim().Length != 0)
{
dr = cmde2.ExecuteReader();
int count = 0;
while (dr.Read())
{
count++;
}
if ((count !0) && (dr.GetString(7).ToString() "Activé"))
{
MessageBox.Show("Ce compte est déjà activé", "Vérification ",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
if ((count !0) && (dr.GetString(7).ToString() "Désactivé"))
{
cmde1.ExecuteNonQuery();
MessageBox.Show("Ce compte est maintenant activé", "Confirmation ",
MessageBoxButtons.OK, MessageBoxIcon.None);
}
}
else
{
MessageBox.Show("Veuillez remplir le champ", "Vérification ",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch
{
Console.WriteLine("erreur");
}
finally
{
con.Close();
}
act.Text = "";
activer.Visible = false;
}
est ce qu'il y a des erreurs dans mon code ou bien on ne peut pas utiliser 2 requêtes en même temps?
veuillez m'aider s'il vous plait?
et merci d'avance.
Tupad
Messages postés239Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention27 août 20125 22 mai 2012 à 10:19
Pour exécuter 2 requêtes tu dois utiliser des transactions. C'est une limite de SQL et c'est décrit là
Quelques conseils pour ton code:
- utilise des requêtes et des paramètres (Command.Parameters) pour plus de sécurité (injection SQL)
- catch la valeur de ton exception (catch (Exception e))
- logge tes erreurs dans un fichier de log (avec nlog ou autre gestionnaire)
- fais une requête "select count(id) as total from .... where ...) ou alors prends que les champs dont tu as besoin et réorganise tes ifs en fonction.
- tu peux utiliser un booléen au lieu d'un int pour ton count car tu testes juste si au moins un compte existe.