请教为什么小弟我下传图片以二进制流的方式保存到数据库时候报错呢?新增一个公告信息时发生异常,异常信息:将截断字符串或二进制数据
请问为什么我上传图片以二进制流的方式保存到数据库时候报错呢?新增一个公告信息时发生错误,错误信息:将截断字符串或二进制数据。
下面是源码:
这个是我的二进制流
类型为:
/// <summary>
/// 文件流
/// </summary>
public byte [] WJL
{
get { return _wjl; }
set { _wjl = value; }
}
对其进行赋值:
byte[] fileByte = null;
fileByte = ConvertFileToBytes(file);
privateAch.WJL = fileByte;
public byte[] ConvertFileToBytes(HttpPostedFile oFile)
{
Stream sm = oFile.InputStream;
byte[] bytes = new byte[oFile.ContentLength];
sm.Read(bytes, 0, oFile.ContentLength);
return bytes;
}
------解决方案--------------------
话说 那个SQL 你就不能写个存储过程 那么长放在代码中不别扭?
------解决方案--------------------
可能不是代码的问题,看看数据库表字段的类型,如果图片大的话最好用个大对象类型来存储,应该是你数据库字段类型的问题导致的,去试试祝LZ早日解决。
------解决方案--------------------
BLOB类型
下面是源码:
- C# code
SqlParameter[] para = { new SqlParameter("@PID", privateAch.PID), new SqlParameter("@ID", privateAch.ID), new SqlParameter("@PersonID", privateAch.PersonID), new SqlParameter("@AchName", privateAch.AchName), new SqlParameter("@AchAddress", privateAch.AchAddress), new SqlParameter("@CreateTime",privateAch.CreateTime), new SqlParameter("@IsDelete",privateAch.IsDelete), new SqlParameter("@Type",privateAch.Type), new SqlParameter("@Bsmall",privateAch.Bsmall), new SqlParameter("@WJL",privateAch.WJL)}; string sql = "IF EXISTS(SELECT * FROM T_PrivateAch WHERE ID=@ID) begin update T_PrivateAch set PID=@PID,PersonID=@PersonID,AchName=@AchName,AchAddress=@AchAddress,CreateTime=@CreateTime,IsDelete=@IsDelete,Type=@Type,Bsmall=@Bsmall,WJL=@WJL where ID=@ID end else begin insert into T_PrivateAch(ID,PID,PersonID,AchName,AchAddress,CreateTime,IsDelete,Type,Bsmall,WJL) values(@ID,@PID,@PersonID,@AchName,@AchAddress,@CreateTime,@IsDelete,@Type,@Bsmall,@WJL); end"; return OperatorProxy.Add("新增一个公告信息", sql, para);
这个是我的二进制流
类型为:
/// <summary>
/// 文件流
/// </summary>
public byte [] WJL
{
get { return _wjl; }
set { _wjl = value; }
}
对其进行赋值:
byte[] fileByte = null;
fileByte = ConvertFileToBytes(file);
privateAch.WJL = fileByte;
public byte[] ConvertFileToBytes(HttpPostedFile oFile)
{
Stream sm = oFile.InputStream;
byte[] bytes = new byte[oFile.ContentLength];
sm.Read(bytes, 0, oFile.ContentLength);
return bytes;
}
------解决方案--------------------
话说 那个SQL 你就不能写个存储过程 那么长放在代码中不别扭?
------解决方案--------------------
可能不是代码的问题,看看数据库表字段的类型,如果图片大的话最好用个大对象类型来存储,应该是你数据库字段类型的问题导致的,去试试祝LZ早日解决。
------解决方案--------------------
BLOB类型