请各位看完问题再作答
通过程序把文件传到数据库保存。同样的程序,只是数据库不同,在MSSQL里上传与下载完全正常。
但用Sybase数据库时上传成功,在取出数据转为byte[]时,出现错误,提示信息是:
“异常详细信息: System.OverflowException: 算术运算导致溢出”一些说明:
sybase版本是12.0.0.6
连接方式odbc
存储字段用image类型比较MSSQL与的sybase里image字段存储的数据发现在sybase里的数据包含了mssql中的数据,也就是说sybase里的数据前一段与mssql里完全相同,并且还多出很长一段数据。我估计这就是数据溢出的原因,但为什么会出现这样的情况,怎么解决呢??但我传了一个4个字节的文本文件又都是正常的。测试过一个10k的图片就出错。存储的部分
string ImageName=myFile.Value;
Byte[]  FileByte  =  new  Byte[FileLength]; 
Stream  ObjectStream  =  UpFile.InputStream;
   
ObjectStream.Read(FileByte,0,FileLength); 
string StrSql="Insert Into UpImage(ImageName,Image) Values(?,?)";
OdbcCommand Cmd=new OdbcCommand(StrSql,conn);
Cmd.Parameters.Add("@ImageName",OdbcType.VarChar,100).Value=ImageName; 
Cmd.Parameters.Add("@Image",OdbcType.Image,FileLength).Value=FileByte;  
 
conn.Open();
Cmd.ExecuteNonQuery();取出
OdbcConnection cn=new OdbcConnection(con);
OdbcCommand cmd=new OdbcCommand();
cmd.CommandText="select Image from UpImage";
cmd.Connection=cn;
cn.Open();
this.Response.ContentType="image/jpeg";
OdbcDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
this.Response.BinaryWrite((byte[])dr["Image"]);//这里出错。但我认为错误源不在这里。
}
cn.Close();