MySQL .NET Connector和Null值

时间:2012-05-03 17:03:16

标签: .net mysql stored-procedures

我试图从.NET调用一个MySQL存储过程,它接受其中一个参数中的NULL值。我从下面构建我的参数列表,当我通过查看Visual Studio shows {}中的值来设置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
                                                      });
        }

1 个答案:

答案 0 :(得分:0)

通过这样做来修复它。看起来MySQL不喜欢AnsiString,它是null的默认数据类型。

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