数据库用的是SQL2000,用C#编写的WINFORM
我搜了一下,很多人都有类似问题
但是好像没找到完美的回复
今天小弟不得不旧话重提,高手请不要烦
程序如下:
private void button1_Click(object sender, System.EventArgs e)//上传
{
cn=new SqlConnection(Constr);
cn.Open();
MemoryStream ms=new MemoryStream();
this.pictureBox1.Image.Save(ms,ImageFormat.Jpeg);
//BinaryReader br=new BinaryReader(s);
byte[] imageBody=ms.ToArray();
string sqlstr="Insert into ImageTable (ImageName,ImageBody,ImageSize) values('"+this.pictureBox1.Image.ToString()+"','"+imageBody+"','"+imageBody.Length+"')";
try
{
cm=new SqlCommand(sqlstr,cn);
cm.ExecuteNonQuery();
cm.Dispose();
MessageBox.Show("上传成功!");
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
cn.Close();
cn.Dispose();
} private void button2_Click(object sender, System.EventArgs e)//下载
{
cn=new SqlConnection(Constr);
cn.Open();
MemoryStream ms;
SqlDataReader myReader;

string sqlstr="select top 1 * from ImageTable where id=2";
cm=new SqlCommand(sqlstr,cn);
try
{
//myReader=cm.ExecuteReader();
byte[] imageBody=(byte[])cm.ExecuteScalar();
//byte[] imageBody = (byte[])myReader["ImageBody"];
ms=new MemoryStream(imageBody);
//ms=new MemoryStream((byte[])myReader["ImageBody"],0,Convert.ToInt32(myReader["ImageSize"].ToString()));
this.pictureBox2.Image=Image.FromStream(ms);
//myReader.Close();
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}

cm.Dispose();
cn.Close();
cn.Dispose();
}
其实代码已经很简单了
上传没问题,问题是下载,下载的二进制数组只有13个。就是下不来图片信息,查询语句通过,这是什么问题啊
20分起,有好的回复再加分

解决方案 »

  1.   

    上传做了以下改进,但是传不进数据了
    private void button1_Click(object sender, System.EventArgs e)//上传
    {
    cn=new SqlConnection(Constr);
    cn.Open();
    MemoryStream ms=new MemoryStream();
    this.pictureBox1.Image.Save(ms,ImageFormat.Jpeg);
    byte[] imageBody=ms.ToArray();          string sqlstr="Insert into ImageTable (ImageName,ImageBody,ImageSize) values('"+this.pictureBox1.Image.ToString()+"',@ImageBody,'"+imageBody.Length+"')";
    try
    {
    cm=new SqlCommand(sqlstr,cn);
    cm.Parameters.Add("@ImageBody", SqlDbType.Image);
    cm.Parameters["@ImageBody"].Value = imageBody;
    cm.ExecuteNonQuery();
    cm.Dispose();
    MessageBox.Show("上传成功!");
    }
    catch(Exception er)
    {
    MessageBox.Show(er.Message);
    }
    cn.Close();
    cn.Dispose();
    }