Requêtes sql

merybaha Messages postés 13 Date d'inscription vendredi 20 avril 2012 Statut Membre Dernière intervention 5 juin 2012 - 21 mai 2012 à 21:54
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 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.

1 réponse

Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
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

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.
0
Rejoignez-nous