Maison >base de données >tutoriel mysql >Pourquoi mon instruction préparée C# MySQL échoue-t-elle et comment puis-je y remédier ?

Pourquoi mon instruction préparée C# MySQL échoue-t-elle et comment puis-je y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 11:54:11220parcourir

Why is my C# MySQL Prepared Statement Failing, and How Can I Fix It?

Dépannage d'une instruction préparée en C# avec MySQL

Vous avez rencontré une erreur en essayant d'utiliser une instruction préparée dans votre programme C# avec MySQL. Bien que sa conversion en instruction standard ait donné les résultats souhaités, vous demandez de l'aide pour identifier le problème.

Code incorrect :

cmd = new MySqlCommand("SELECT * FROM admin WHERE admin_username='@val1' AND admin_password=PASSWORD('@val2')", MySqlConn.conn);
cmd.Prepare();
cmd.Parameters.AddWithValue("@val1", tboxUserName.Text);
cmd.Parameters.AddWithValue("@val2", tboxPassword.Text);

Corrections :

  • Utilisez Préparer après avoir ajouté des paramètres : Dans le code incorrect, la commande a été préparée avant l'ajout de paramètres. L'approche correcte consiste à ajouter d'abord des paramètres, puis à appeler Prepare().
  • Supprimer les guillemets simples de la requête : La requête contenait des guillemets simples entourant les espaces réservés des paramètres (@val1 et @val2), ce qui est incorrect. Les instructions préparées nécessitent des espaces réservés pour les paramètres sans guillemets.

Code corrigé :

cmd = new MySqlCommand("SELECT * FROM admin WHERE admin_username=@val1 AND admin_password=PASSWORD(@val2)", MySqlConn.conn);
cmd.Parameters.AddWithValue("@val1", tboxUserName.Text);
cmd.Parameters.AddWithValue("@val2", tboxPassword.Text);
cmd.Prepare();

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn