日期:2014-05-17  浏览次数:20513 次

请问为什么我上传图片以二进制流的方式保存到数据库时候报错呢?新增一个公告信息时发生错误,错误信息:将截断字符串或二进制数据。
下面是源码:


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类型