1

パラメータの1つでNULL値を受け入れる.NETからMySQLストアドプロシージャを呼び出そうとしています。以下からパラメータリストを作成しましたが、Visual Studioの値を見てDBNull.Valueを設定すると、エラーが発生し続けます{}。これがエラーである理由はわかりませんが、理由の詳細なメッセージはありません。

 protected IEnumerable<MySqlParameter> BuildParameterList(IEnumerable<KeyValuePair<string, object>> parameters)
        {
            return parameters.Select(parameter => new MySqlParameter(parameter.Key, parameter.Value ?? DBNull.Value)
                                                      {
                                                          IsNullable = parameter.Value == null
                                                      });
        }
4

1 に答える 1

0

これを行うことで修正しました。MySQLはnullのデフォルトのデータ型であるAnsiStringを好まなかったようです。

protected IEnumerable<MySqlParameter> BuildParameterList(IEnumerable<KeyValuePair<string, object>> parameters)
        {
            foreach (var parameter in parameters)
            {
                var mysqlParameter = new MySqlParameter(parameter.Key, parameter.Value ?? DBNull.Value)
                                 {
                                     IsNullable = parameter.Value == null
                                 };

                if(parameter.Value == null && mysqlParameter.DbType == DbType.AnsiString)
                {
                    mysqlParameter.DbType = DbType.String;
                }


                yield return mysqlParameter;
            }
        }
于 2012-05-03T18:01:05.340 に答える