sql_variant的大小限制超出

sau*_*yal 5 c# sql asp.net visual-studio

我试图将图像从fileupload控件保存到数据库中

public Byte[] bytes;
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
bytes = br.ReadBytes((Int32)fs.Length);
SqlDataSource2.Update();

protected void SqlDataSource2_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
   e.Command.Parameters["@project_file"].Value = bytes;
}
Run Code Online (Sandbox Code Playgroud)

我的数据库project_file字段设置为varbinary(MAX),

但这是一个错误

参数'@project_file'超出了sql_variant数据类型的大小限制.

请提出一些解决方案

Fil*_*erg 7

这是MSDN对binary和varbinary的引用:

可变长度的二进制数据.n可以是1到8,000之间的值.max表示最大存储大小为2 ^ 31-1个字节.存储大小是输入数据的实际长度+ 2个字节.输入的数据长度可以是0个字节.varbinary的ANSI SQL同义词是二进制变量.

varbinary(MAX) 可以容纳~2GB大小的图像.

解决您的问题:

您忘记在代码中指定类型.您需要设置正确的SqlDbType.

e.Command.Parameters["@project_file"].SqlDbType = SqlDbType.VarBinary

您还应该做什么我设置正确的大小.