Fatal error encountered during command execution.
というメッセージを吐く場合があります。クエリにパラメータを設け MySqlParameter クラスでパラメータを設定しない場合、この例外が発生します。例えば Dim query AS String = "SELECT * FROM customer WHERE id = @id" Dim command As New MySqlCommand(query, con) command.ExecuteNonQuery()このクエリの場合、パラメータ id には値が割り当てられてないため、MySqlCommand クラスはこの例外を発生します。以下のようにパラメーターを設定すれば、例外は発生しません。 (´∀`) Dim query AS String = "SELECT * FROM customer WHERE id = @id" Dim command As New MySqlCommand(query, con) command.Parameters.Add(New MySqlParameter("id", 10)) command.ExecuteNonQuery()また気をつけなければいけないのは、以下のケース。 select @data := 3, @data * 4
この場合、クエリ内でパラメータに値を設定してるから phpMyAdmin や Navicat では正常に実行されます。 しかし MySQL Connector/NET では Dim query AS String = "select @data := 3, @data * 4" Dim command As New MySqlCommand(query, con) command.ExecuteNonQuery() Fatal error encountered during command execution.
・・・例外が発生します。(-ω-) MySQL Connector/NET の仕様ということで注意が必要です。 ちなみに SQLClient の場合は・・・・・・・・・忘れた!(^ω^) あと、どのパラメータが設定されてないのか調べるには、例外をウオッチして InnerException プロパティを見れば判ります。このケースでは ?id というパラメータが設定されてないのが判ります。(-ω-) |
この記事に
- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア
パラメーターを使っていないSELECT文でこれが発生するんですが
なぜでしょうねえ。同じSELECT文でも発生したりしなかったり
するんで、わけがわからんのです。
2010/7/5(月) 午前 11:58 [ たな ] 返信する
クエリや前後のソースを見てみないと何とも言えないです。コメントだと厳しいので、フォーラムとかに質問投げてみませんか?
MSDN フォーラムでも、先月くらいから幾つか MySQL Connector/NET の質問が出てきております。私も MSDN フォーラムに常駐しているので、VB か C# 辺りのカテゴリで質問されれば、回答できるかも知れません。
http://social.msdn.microsoft.com/Forums/ja-JP/categories/
2010/7/6(火) 午前 10:54 [ hilapon ] 返信する
ありがとうございます。そりゃそうですよね。自分の知らない典型的な例がほかにもあるかも知れないと思って書いてみました。あまりにややこしいのでもう少し自力でやってみます。
2010/7/6(火) 午後 7:22 [ たな ] 返信する