System.Data二进制类型.SqlClient.SqlException:“将截断字符串或二进制数据。 语句已终止。”

摸鱼仔啊k 2018-06-25 10:02:36



不知道哪里出错了,数据库里的类型和长度应该没有问题啊
...全文
444 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
本人QQ-554433626 2018-06-25
  • 打赏
  • 举报
回复
F_FPhoto超长 binary是固定长度的(不可变) 你设置50就是最多50个字节二进制数据 肯定超长了啊


cmd.Parameters.Add("@Photo",SqlDbType.Binary).Value = imgBytesIn;

改为

cmd.Parameters.Add("@Photo", SqlDbType.Binary, imgBytesIn.Length);
cmd.Parameters["@Photo"].Value = byData;

并把F_FPhoto字段长度改为 4418以上
足球中国 2018-06-25
  • 打赏
  • 举报
回复
人家已经提示你了,长度不够。已经被截断了。
摸鱼仔啊k 2018-06-25
  • 打赏
  • 举报
回复
引用 9 楼 qq_37753824 的回复:
F_FPHOTO 超长了吧

他的值 imgBytesIn {byte[4418]}
摸鱼仔啊k 2018-06-25
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你发送的数据更新 sql 语句和数据,仔细核对一下每一个字段的设计长度、实际字符串值的长度。注意.net 使用 unicode 字符,其长度不是匹配 varchar(...) 这中类型的长度的,而是它的2倍长度。
实际字符串值的长度是按照给定的值判断吗,长度匹配 varchar(...) 2倍长度,是只能=2倍,还是可以只要大于2倍就可以
摸鱼仔啊k 2018-06-25
  • 打赏
  • 举报
回复
引用 6 楼 daixf_csdn 的回复:
就是数据超长了。
不好意思是哪个数据超长了啊
qq_37753824 2018-06-25
  • 打赏
  • 举报
回复
F_FPHOTO 超长了吧
摸鱼仔啊k 2018-06-25
  • 打赏
  • 举报
回复
引用 5 楼 daihao1024 的回复:
传参超长了!
指的是FilmID吗
为何超长了
摸鱼仔啊k 2018-06-25
  • 打赏
  • 举报
回复
public void SaveImage(string FilmID, string s)//将图片以二进制存入数据库中
{
string strimg = s; //记录图片的所在路径
FileStream fs = new FileStream(strimg, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
BinaryReader br = new BinaryReader(fs);
byte[] imgBytesIn = br.ReadBytes((int)fs.Length);//将流读入到字节数组中
string strConn = "Data Source=LAPTOP-KF9NN681;Initial Catalog=宿舍管理;Integrated Security=True";
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("update T_Film Set F_FPhoto=@Photo where F_FId='" + FilmID+"'");
SqlCommand cmd = new SqlCommand(strSql.ToString(), conn);
cmd.Parameters.Add("@Photo",SqlDbType.Binary).Value = imgBytesIn;
cmd.ExecuteNonQuery();
conn.Close();
}
private void button1_Click(object sender, EventArgs e)
{
圣殿骑士18 2018-06-25
  • 打赏
  • 举报
回复
就是数据超长了。
daihao1024 2018-06-25
  • 打赏
  • 举报
回复
传参超长了!
qq_24859323 2018-06-25
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
很简单地给图片一个按钮链接,奇怪 csdn 怎么测试的啊?

鼠标左键不放,往右一拉就看到原图了
  • 打赏
  • 举报
回复
很简单地给图片一个按钮链接,奇怪 csdn 怎么测试的啊?
  • 打赏
  • 举报
回复
唉,csdn无法点击然后按照正常尺寸打开图片了,所以懒得看这些缩小了的图片了。

以后不要在 csdn 发图片了。或者换其它论坛去发图片,然后这里贴链接地址。
  • 打赏
  • 举报
回复
你发送的数据更新 sql 语句和数据,仔细核对一下每一个字段的设计长度、实际字符串值的长度。注意.net 使用 unicode 字符,其长度不是匹配 varchar(...) 这中类型的长度的,而是它的2倍长度。

110,526

社区成员

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

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

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