我有一个允许电子签名的网络应用程序。当我获得签名时,它是确切的大小(大多数大于8000字节)。但是当它进入数据库时,它会一直被截断为8000字节。 当我检查varbinary时,它表示如果字节数组大于8,000字节,则隐式转换失败。使用大于8,000字节的字节数组时,显式设置对象。 我在以下场景中如何做到这一点?我不想丢失任何字节。
public DataSet InsertInformation(FormInformation info)
{
SqlCommand command = new SqlCommand("SPInsertSig");
command.Parameters.Add("@Signature", SqlDbType.VarBinary).Value = info.Signature;
DataSet resultDataSet;
resultDataSet = ExecuteStoreProcedure(command);
return resultDataSet;
}
当我用Google搜索时,有人提到尝试这种方式,但它也不起作用,并将值截断为8000字节。
SqlParameter param = command.Parameters.Add("@Signature", SqlDbType.VarBinary);
param.Value = info.Signature;
param.Size = -1;
任何建议都会非常感激。 感谢
更新 将其更改为Int32.MaxValue后,它可以正常工作。
答案 0 :(得分:2)
尝试使用新的SqlParemeter c' tor:
SqlParameter(String, SqlDbType, Int32)
或在你的情况下:
command.Parameters.Add(new SqlParameter("@Signature", SqlDbType.VarBinary, -1)).Value = info.Signature;
答案 1 :(得分:1)
由于问题缺乏深度,没有人可以明确地给出答案,因此您确实需要按照清单来确定问题。这是你应该检查的顺序;最常见的原因,在我的经验中最不常见。由于你所看到的消息,我打赌#4是罪魁祸首。
varbinary(max)
?.size=-1
)?CAST
或CONVERT
来电指定VARBINARY
,但存储过程中的大小不正确?CAST
或CONVERT
调用指定VARBINARY
,但存储过程中的大小不正确?