C# 无法在varbinary(max)中插入空值,出现错误:不允许从数据类型nvarchar隐式转换为varbinary(max)
我想在varbinary(max)中插入null值,但它返回了一个错误 我正在尝试下面的代码来保存照片,当我附加照片时,它保存下来没有任何问题。当没有照片时,它会抛出一个错误 不支持从数据类型nvarchar到varbinary(max)的隐式转换 允许。使用CONVERT函数运行此查询C# 无法在varbinary(max)中插入空值,出现错误:不允许从数据类型nvarchar隐式转换为varbinary(max),c#,C#,我想在varbinary(max)中插入null值,但它返回了一个错误 我正在尝试下面的代码来保存照片,当我附加照片时,它保存下来没有任何问题。当没有照片时,它会抛出一个错误 不支持从数据类型nvarchar到varbinary(max)的隐式转换 允许。使用CONVERT函数运行此查询 这是由AddWithValue调用引起的一个细微错误。(和)。 当AddWithValue能够正确识别参数的类型时,您没有问题,但是当您将参数值设置为DBNull.value时,该方法尝试将其转换为字符串,您会
这是由AddWithValue调用引起的一个细微错误。(和)。
当AddWithValue能够正确识别参数的类型时,您没有问题,但是当您将参数值设置为DBNull.value时,该方法尝试将其转换为字符串,您会收到错误,因为数据字段需要VARBINARY。
但是,在构建参数列表时,您可以准确地指定所需的类型,因此只需将参数传递给Add方法,而无需使用AddWithValue构建另一个参数
foreach (SqlParameter Parameter in _parameters)
{
myCommand.Parameters.Add(Parameter);
}
您甚至可以使用
myCommand.Parameters.AddRange(_parameters.ToArray());
另外,正如我在其他评论中指出的,INSERT命令应该写成
INSERT INTO (pat_id,photo) VALUES (@pat_id ,@photo)
尝试更改myCommand.parameters.add(Parameter)中向命令添加参数的行;另外,INSERT命令错误。将参数用于字段名和值。您应该将INSERT写入(pat_id,photo)值(@pat_id,@photo)可能与我在用myCommand.Parameters.Add(Parameter)替换时遇到的此错误重复;SqlParameter已包含在另一个SqlParameterCollection中。
INSERT INTO (pat_id,photo) VALUES (@pat_id ,@photo)