public bool UpdatepPhoto(string name, byte[] cover)
        {
            using (conn = new SqlConnection(connString))
            {
                try
                {
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "UPDATE Albums SET COVER=@COVER WHERE NAME=" + "'" + name + "'";
                    SqlParameter param0 = new SqlParameter("Cover", SqlDbType.Image);
                    param0.Value = cover;
                    cmd.Parameters.Add(param0);
                    conn.Open();
                    if (cmd.ExecuteNonQuery() > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return false;
                }
                finally
                {
                    conn.Close();                }
            }
        }更新函数如上,为啥我更新之后再读出时,
 byte[] coverSource = (byte[])item["Cover"];
                string coverName = (string)item["Name"];
                MemoryStream stream = new MemoryStream(coverSource,0,coverSource.Length);
                Image coverImage = Image.FromStream(stream);
Image coverImage = Image.FromStream(stream);这句话会显示参数无效,debug中,coverSource 数组全是0,这是为什么?
到底是更新是出错,还是读出时出错?

解决方案 »

  1.   

    FromStream方法的参数是System.IO.Stream,不是MemoryStream !
      

  2.   

    晕...stream是抽象类,肯定无法实例化。memorystream也是stream呀,父类,子类的关系
      

  3.   

    能用基类System.IO.Stream的地方,肯定可以用MemeryStream吧?
    LZ试一下把SqlParameter param0 = new SqlParameter("Cover", SqlDbType.Image);
    改为:SqlParameter param0 = new SqlParameter("@COVER", SqlDbType.Image);
    估计拼写错误
      

  4.   

    我用Insert插入时就没问题,参数也是不加@的。我发现update后,数据库中存的二进制数据根本和我读入的不同。
    但是两个二进制流的大小却一样,只是里面的数值一点也不同.....哪位帮个忙指点一下吧...
    难道update写的有错?Insert语句是没错的,插入后可读入,也可以读出.....
      

  5.   

    给楼主一个参考
    貌似Update没错,怪了