ホームページ >データベース >mysql チュートリアル >C# MySQL プリペアド ステートメントが失敗するのはなぜですか? どうすれば修正できますか?

C# MySQL プリペアド ステートメントが失敗するのはなぜですか? どうすれば修正できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-28 11:54:11149ブラウズ

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

MySQL を使用した C# のプリペアド ステートメントのトラブルシューティング

MySQL を使用して C# プログラムでプリペアド ステートメントを利用しようとしたときにエラーが発生しました。標準ステートメントに変換すると望ましい結果が得られましたが、問題を特定するための支援を求めています。

間違ったコード:

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);

修正:

  • 追加後に準備を使用するパラメータ: 間違ったコードでは、パラメータを追加する前にコマンドが準備されています。正しいアプローチは、最初にパラメータを追加してから Prepare() を呼び出すことです。
  • クエリから一重引用符を削除します: クエリにはパラメータ プレースホルダ (@val1 および @val2) を囲む一重引用符が含まれていました。それは間違いです。準備されたステートメントには、引用符のないパラメーター プレースホルダーが必要です。

修正コード:

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();

以上がC# MySQL プリペアド ステートメントが失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。