如何在MySql中的Nvarchar类型(过程参数)中传递DBNull

时间:2015-05-21 14:10:38

标签: c# mysql stored-procedures nvarchar dbnull

我正在使用MySQL c# 4

我的过程参数是NVARCHAR(100)

所以我正在做的是

MySqlParameter DBParam1 = new MySqlParameter("var_Name", (object)(string.IsNullOrEmpty(Name)? DBNull.Value : Name));

MySqlCommand _DBCommand = new MySqlCommand();
_DBCommand.Connection = _DBConnection;
_DBCommand.CommandText = "udsp_ProcedureName";
_DBCommand.CommandType = System.Data.CommandType.StoredProcedure;
_DBCommand.Parameters.Clear();
_DBCommand.Parameters.Add(DBParam1);

所以这是抛出“ErrorMessage”:“遇到未处理的类型”

我该如何解决这个问题?

我看了什么

How do I Parameterize a null string with DBNull.Value clearly and quickly

Is there a more elegant form for assigning NULL to InsertCommand's NVarChar?

Exception when AddWithValue parameter is NULL

2 个答案:

答案 0 :(得分:0)

您正在使用构造函数来设置值,而期望值为MySqlDBType

试试这个:

MySqlParameter DBParam1 = new MySqlParameter("@var_Name", MySqlType.VarChar)
DBParam1.Value = (object)(string.IsNullOrEmpty(Name) ? DBNull.Value : Name;

答案 1 :(得分:0)

DBNull.Value传递给NVARCHAR类型会引发异常

  

" ErrorMessage":"遇到未处理的类型"

所以我把它作为空字符串传递。

MySqlParameter DBParam1 = new MySqlParameter("var_Name", (object)(string.IsNullOrEmpty(Name)? string.Empty : Name));