用C#往SQL里存储图片,为什么老是重复了

来源:百度知道 编辑:UC知道 时间:2024/07/03 11:26:21
private void button1_Click(object sender, EventArgs e)
{
photo1_DoubleClick();
photo2_DoubleClick();

}

private void photo1_DoubleClick()
{
MemoryStream ms = new MemoryStream();
string sql = "insert into cn1 (cn1) values (@photo1)";
photo1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
SqlCommand cm = new SqlCommand(sql, cn);
byte[] picbyte;
picbyte = new byte[ms.Length];
ms.Position = 0;
ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));
cm.Parameters.Add("@photo1", System.Data.SqlDbType.VarBinary, (int)(ms.Length)).Value = picbyte;
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
ms.Close();
}
private voi

修改
cn.Close();
ms.Close();
为:
cn.Close();
ms.Dispose();
ms.Close();
试试看。

原因(个人认为):MemoryStream 类创建的流以内存而不是磁盘或网络连接作为支持存储区,所以数据依旧驻留在内存中。