Fatal error encountered during command execution.
というメッセージを吐く場合があります。クエリにパラメータを設け MySqlParameter クラスでパラメータを設定しない場合、この例外が発生します。例えば
Dim query AS String = "SELECT * FROM customer WHERE id = @id"このクエリの場合、パラメータ id には値が割り当てられてないため、MySqlCommand クラスはこの例外を発生します。以下のようにパラメーターを設定すれば、例外は発生しません。 (´∀`)
Dim command As New MySqlCommand(query, con)
command.ExecuteNonQuery()
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 では
しかし 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 の場合は・・・・・・・・・忘れた!(^ω^)
ちなみに SQLClient の場合は・・・・・・・・・忘れた!(^ω^)
あと、どのパラメータが設定されてないのか調べるには、例外をウオッチして InnerException プロパティを見れば判ります。このケースでは ?id というパラメータが設定されてないのが判ります。(-ω-)
0 件のコメント:
コメントを投稿