2012-05-03 45 views
0

我想從.NET中調用一個MySQL存儲過程,在其中一個參數中接受NULL值。我從下面建立我的參數列表,當我通過查看Visual Studio顯示中的值來設置DBNull.Value時,我不斷收到錯誤{}。我不知道爲什麼這是錯誤的,但沒有給出任何詳細的原因。MySQL的.NET連接器和NULL值

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

回答

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