如果未向null
提供ImageByteArray
,则我尝试将Parameters.Add
的值传递给图像数据库字段
cmd.Parameters.Add(new SqlParameter("@Img", SqlDbType.Image)).Value =
DBNull.Value ? null : ImageByteArray;
但是我收到错误提示
不能将类型'System.DBNull'隐式转换为'bool'
首先是正确的方法>
如果是,如果未提供null
,如何传递ImageByteArray
值?
如果不提供字节数组,我不知道我想做的事情是将null传递给参数,所以我避免使用Procedure or function expects parameter '@img', which was not supplied.
答案 0 :(得分:1)
DBNull.Value ? null : ImageByteArray;
这部分是错误的。因为三元运算符需要为布尔结果进行比较。尝试以下一项;
(object)ImageByteArray ?? DBNull.Value;
如果ImageByteArray为null,它将为您的sql参数分配DBNull.Value。
答案 1 :(得分:1)
这是我正在使用的:
command.Parameters.Add("@Img", SqlDbType.VarBinary, ImageByteArray == null ? -1 :
ImageByteArray.Length).Value = ImageByteArray ?? (object)DBNull.Value;
基本上,当您将字节数组发送到数据库时,需要指定它是否为空。发送-1表示长度意味着接收到的数组为空。