Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在varbinary中存储16000字节_C#_Sql Server - Fatal编程技术网

C# 如何在varbinary中存储16000字节

C# 如何在varbinary中存储16000字节,c#,sql-server,C#,Sql Server,我有一个允许电子签名的web应用程序。当我得到签名时,它是精确的大小(大部分大于8000字节),但当它进入数据库时,它总是被截断为8000字节。 当我检查varbinary时,它说“如果字节数组大于8000字节,隐式转换将失败。使用大于8000字节的字节数组时,显式设置对象。' 在下面的场景中,我如何做到这一点?我不想丢失任何字节 public DataSet InsertInformation(FormInformation info) { SqlCommand command = n

我有一个允许电子签名的web应用程序。当我得到签名时,它是精确的大小(大部分大于8000字节),但当它进入数据库时,它总是被截断为8000字节。 当我检查varbinary时,它说“如果字节数组大于8000字节,隐式转换将失败。使用大于8000字节的字节数组时,显式设置对象。' 在下面的场景中,我如何做到这一点?我不想丢失任何字节

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;
}
当我在谷歌上搜索时,有人提到尝试这种方法,但它也不起作用,并将值截断为8000字节

SqlParameter param = command.Parameters.Add("@Signature", SqlDbType.VarBinary);
param.Value = info.Signature;
param.Size = -1;
任何建议都将不胜感激。 谢谢

更新
将其更改为Int32.MaxValue后,它工作正常。

尝试使用新的SQLPareter命令:

SqlParameter(String, SqlDbType, Int32)
或者在您的情况下:

command.Parameters.Add(new SqlParameter("@Signature", SqlDbType.VarBinary, -1)).Value = info.Signature; 

尝试使用新的SqlParemeter命令:

SqlParameter(String, SqlDbType, Int32)
或者在您的情况下:

command.Parameters.Add(new SqlParameter("@Signature", SqlDbType.VarBinary, -1)).Value = info.Signature; 

尝试使用新的SqlParemeter命令:

SqlParameter(String, SqlDbType, Int32)
或者在您的情况下:

command.Parameters.Add(new SqlParameter("@Signature", SqlDbType.VarBinary, -1)).Value = info.Signature; 

尝试使用新的SqlParemeter命令:

SqlParameter(String, SqlDbType, Int32)
或者在您的情况下:

command.Parameters.Add(new SqlParameter("@Signature", SqlDbType.VarBinary, -1)).Value = info.Signature; 

由于问题缺乏深度,没有人能给你一个确切的答案,因此你真的需要按照清单来确定问题。在我看来,这是你应该检查的顺序;在我的经验中,最常见的原因是最不常见的。由于您看到的信息,我打赌4是罪魁祸首

  • 表中的字段是否声明为
    varbinary(max)
  • 代码中的SQL参数大小是否正确(即
    .size=-1
  • 正在调用的存储过程在参数声明中的字段大小是否正确
  • 存储过程中是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但大小不正确
  • 表上是否有触发器将数据备份到另一个表?如果是,那张桌子的尺寸是否正确?另外,如果存在触发器,是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但在存储过程中大小不正确
  • 存储过程中是否有任何地方将原始值复制到另一个变量中,而该变量的大小不正确
  • 是否存在针对可能被错误声明的字段编制索引的视图

  • 由于问题缺乏深度,没有人能给你一个确切的答案,因此你真的需要按照清单来确定问题。在我看来,这是你应该检查的顺序;在我的经验中,最常见的原因是最不常见的。由于您看到的信息,我打赌4是罪魁祸首

  • 表中的字段是否声明为
    varbinary(max)
  • 代码中的SQL参数大小是否正确(即
    .size=-1
  • 正在调用的存储过程在参数声明中的字段大小是否正确
  • 存储过程中是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但大小不正确
  • 表上是否有触发器将数据备份到另一个表?如果是,那张桌子的尺寸是否正确?另外,如果存在触发器,是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但在存储过程中大小不正确
  • 存储过程中是否有任何地方将原始值复制到另一个变量中,而该变量的大小不正确
  • 是否存在针对可能被错误声明的字段编制索引的视图

  • 由于问题缺乏深度,没有人能给你一个确切的答案,因此你真的需要按照清单来确定问题。在我看来,这是你应该检查的顺序;在我的经验中,最常见的原因是最不常见的。由于您看到的信息,我打赌4是罪魁祸首

  • 表中的字段是否声明为
    varbinary(max)
  • 代码中的SQL参数大小是否正确(即
    .size=-1
  • 正在调用的存储过程在参数声明中的字段大小是否正确
  • 存储过程中是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但大小不正确
  • 表上是否有触发器将数据备份到另一个表?如果是,那张桌子的尺寸是否正确?另外,如果存在触发器,是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但在存储过程中大小不正确
  • 存储过程中是否有任何地方将原始值复制到另一个变量中,而该变量的大小不正确
  • 是否存在针对可能被错误声明的字段编制索引的视图

  • 由于问题缺乏深度,没有人能给你一个确切的答案,因此你真的需要按照清单来确定问题。在我看来,这是你应该检查的顺序;在我的经验中,最常见的原因是最不常见的。由于您看到的信息,我打赌4是罪魁祸首

  • 表中的字段是否声明为
    varbinary(max)
  • 代码中的SQL参数大小是否正确(即
    .size=-1
  • 正在调用的存储过程在参数声明中的字段大小是否正确
  • 存储过程中是否有
    CAST
    CONVERT
    调用指定
    VARBINARY
    ,但大小不正确
  • 表上是否有触发器将数据备份到另一个表?如果是,那张桌子的尺寸是否正确?还有,如果有触发器,是否有