不知道哪里出错了,数据库里的类型和长度应该没有问题啊

解决方案 »

  1.   

    你发送的数据更新 sql 语句和数据,仔细核对一下每一个字段的设计长度、实际字符串值的长度。注意.net 使用 unicode 字符,其长度不是匹配 varchar(...) 这中类型的长度的,而是它的2倍长度。
      

  2.   

    唉,csdn无法点击然后按照正常尺寸打开图片了,所以懒得看这些缩小了的图片了。以后不要在 csdn 发图片了。或者换其它论坛去发图片,然后这里贴链接地址。
      

  3.   

    很简单地给图片一个按钮链接,奇怪 csdn 怎么测试的啊?
      

  4.   

    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)
            {
           
      

  5.   

    指的是FilmID吗
    为何超长了
      

  6.   

    F_FPHOTO 超长了吧
      

  7.   

    实际字符串值的长度是按照给定的值判断吗,长度匹配 varchar(...) 2倍长度,是只能=2倍,还是可以只要大于2倍就可以
      

  8.   

    他的值  imgBytesIn {byte[4418]}
      

  9.   

    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以上