上传的代码:        
private void upload_Click(object sender, EventArgs e)
        {
            //二进制来存储图片  
            FileStream stream = new FileStream(fName, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, (int)stream.Length);
            stream.Close();
            string sql = "insert into 图库(房屋编号,图片)values('" + "1" + "','" + buffer + "')";
            SIUD.Insert_and_update(sql);
            upload.Enabled = false;
        }读取代码:        void read_picture() 
        {
            byte[] imageBytes;
            string sql = "select * from 图库 where 房屋编号='" + "1" + "'";
            SqlDataReader dr = SIUD.dr_read_picture(sql);
            if(dr.Read()){
            imageBytes = (byte[])dr["图片"];//获取图片数据
            //将内存流格式化为位图
            MemoryStream stream = new MemoryStream(imageBytes);
           Bitmap bmap = new Bitmap(stream);
           // ms1.Close();
            this.pictureBox1.Image = bmap;//将位图显示在界面的PictureBox控件中
            }
        }
 MemoryStream stream = new MemoryStream(imageBytes)说是参数无效

解决方案 »

  1.   

    首先确保存进去的时候没有问题。
    其次确认imageBytes已经被正确读取到。显示为图片的代码:
    Image img = Image.FromStream(new MemoryStream(imageBytes));
    pictureBox1.Image = img;
      

  2.   

    http://www.cnblogs.com/sufei/archive/2010/09/24/1834054.html
      

  3.   

    楼主好像存储的方法有问题,不能直接通过Insert把图片插入到数据库里,建议看下下面的这个存储到数据库的方法:
    http://www.cnblogs.com/wuzi145/archive/2012/05/04/2483529.html
      

  4.   

            public void Insert_picture(string sql, byte[] buffer)
            {
                SqlConnection sqlcon = new SqlConnection(connStr);
                sqlcon.Open();
                SqlCommand cmd = new SqlCommand(sql, sqlcon);
                SqlParameter paramTitle = new SqlParameter("@buffer", SqlDbType.Image);
                paramTitle.Value = buffer;
                cmd.Parameters.Add(paramTitle); 
                int b = cmd.ExecuteNonQuery();
                sqlcon.Close();
            }
            public void Insert_picture(string sql, byte[] buffer)
            {
                SqlConnection sqlcon = new SqlConnection(connStr);
                sqlcon.Open();
                SqlCommand cmd = new SqlCommand(sql, sqlcon);
                SqlParameter paramTitle = new SqlParameter("@buffer", SqlDbType.Image);
                paramTitle.Value = buffer;
                cmd.Parameters.Add(paramTitle); 
                int b = cmd.ExecuteNonQuery();
                sqlcon.Close();
            }
    这个样子也不行唉
      

  5.   

    imageBytes = (byte[])dr["图片"];//获取图片数据检查imageBytes是否有数据  肯定是你读取出来的数据有问题 或者存进去的有问题
      

  6.   

    你说的,我也知道,可是我找不到.不知道怎么去判断.
    我存进去和读出来我都贴出来了 
    你们帮我看看
    数据库的图片肯定是IMAGE格式   查找数据库也成功   查了数据库  图片的数据显示是<二进制...>
      

  7.   

    楼主贴出的代码也还只是片段,不太好说哪里有问题,不过看起来思路应该是正确的。可以这样测试:1 随便找一张正常的jpg文件,用你的方法存入数据库
    2 再用你的方法读出byte [],然后用 File.WriteAllBytes还原成文件,后缀改成jpg,看看能不能正确显示。如果可以的话撇开DBHelper之类的,直接用原味ADO.NET再测试下。