次の方法で共有

.NET8でNuGetパッケージ「MySQL.Data」を使用すると不具合と思われる挙動が起きる

kaihatsu 0 評価のポイント
2024-06-21T03:18:37.97+00:00

.NET8でMySqlParameter(string parameterName, object value)のパターンのコンストラクタを使用して、valueに固定値「0」を指定するとnullがセットされてしまいます。

いつ頃対応予定でしょうか。

以下URLの「Contact owners →」リンクよりMySQLに問い合わせましたが、応答がありませんでしたので、こちらに問い合わせした次第です。

https://www.nuget.org/packages/MySql.Data/8.4.0

よろしくお願いいたします。

開発者テクノロジ | .NET | その他
開発者テクノロジ | .NET | その他

.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。 特定のカテゴリに適合しないその他のトピック。

開発者テクノロジ | C#
開発者テクノロジ | C#

C 言語ファミリをルーツとし、コンポーネント指向プログラミングのサポートを含む、オブジェクト指向およびタイプセーフのプログラミング言語。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. SurferOnWww 6,016 評価のポイント
    2024-06-21T07:43:20.74+00:00

    @gekka さんの回答とダブるところがありますが・・・

    いつ頃対応予定でしょうか。

    バグではないので対応はされないでしょう。

    MySqlParameter("@name", 0) というように第 2 引数に 0 というリテラルを使ったのだと思いますが、そうすると 0 は列挙型とみなされ MySqlParameter(String, MySqlDbType) のオバーロードが使われるからです。(注: Enum MySqlDbType は列挙型)

    詳しくは Stackoverflow の記事 Why does MySqlParameter Add parameter as 0 convert to null を見てください。

    SqlParameter の場合は Microsoft のドキュメント SqlParameter(String, Object) に説明があって、周知の事実的な話です。

    この回答は役に立ちましたか?


  2. gekka 14,146 評価のポイント MVP ボランティア モデレーター
    2024-06-21T03:43:57.0233333+00:00

    ここはMySQLの連絡先ではないので、不具合だと考えるのでしたら公式フォーラム公式バグレポートにしましょう。

    enum型に対して整数値の0を与えるとenum型にもなるので、コンストラクタの引数の2個めがMySqlDbTypeと解釈されているだけだと思いますが。

    public sealed class MySqlParameter
    	public MySqlParameter(string parameterName, object value)
    	public MySqlParameter(string parameterName, MySqlDbType dbType)
    

    明示的にobjectの方を呼ばれるようにすればいいです。

     MySql.Data.MySqlClient.MySqlParameter p = new MySql.Data.MySqlClient.MySqlParameter("", (object)0);
    

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。