SQL数据库IMAGE字段写入问题

小龙11 2017-02-15 04:07:41
在做一个图片传入工具,在将图片压缩并转成流文件后,写入数据库时,报“将截断字符串或二进制作数据语句已终止”。
检查了很久发现问题出现在将图片转换成BYTE[ ]这里。
图片转换成Byte[ ]的程序代码如下:
public byte[] Read_Image(string strSavePath)
{
byte[] imgBytesIn;
FileStream fs = new FileStream(strSavePath, FileMode.Open, FileAccess.Read);//将图片以文件流的形式进行保存
BinaryReader br = new BinaryReader(fs);
imgBytesIn = br.ReadBytes((int)fs.Length); //将流读入到字节数组中
fs.Close();
return imgBytesIn;

}
有没有什么办法控制写入时byte[]的长度。

...全文
213 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_peng_yl 2017-02-16
  • 打赏
  • 举报
回复
SQL Server缺省安装时,TEXT、NTEXT、 IMAGE类型字段是有长度限制,如果写入的数据超过限制就会抛出异常,缺省的长度限制是65536,需要修改数据库的全局配置参数: exec sp_configure 'max text repl size (B)', '655360' --调整长度限制为655360,增加了10倍 reconfigure --使配置生效
qq_36769535 2017-02-15
  • 打赏
  • 举报
回复
我也用的是这个,写入用这个方式,没错啊,用了好长时间了

socket传输图片,
//接收传过来的Base64String (图片的字符串)
byte[] fac = Convert.FromBase64String(set_User[5]);//还原为byte[],也可以直接读图片,也用你的方式啊
//更新到数据库                  
SqlCommand com_user = new SqlCommand("UPDATE Trans_User SET 
", FileU_Favicon=@pic" +
" WHERE id='1'", Conn);
com_user.Parameters.Add("@pic", SqlDbType.VarBinary).Value = fac;
com_user.ExecuteNonQuery();

//客户端图片读取生成字符串,上面只是还原
 OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "选择图像文件";
            ofd.Filter = "图像文件|*.png;*bmp;*.jpg";
            ofd.RestoreDirectory = true;
            ofd.Multiselect = false;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                set_fac.Text = ofd.FileName;
                byte[] imagebytes = func.ReadImageFile(ofd.FileName);
                MsgList.user_info[5] = Convert.ToBase64String(imagebytes);
            }

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧