C# 如何将空图像添加到表中

C# 如何将空图像添加到表中,c#,winforms,C#,Winforms,如果用户未为picturebox设置图像,请将empy图像保存在表中 我的代码是: byte[] arrImage; if (picperson.Image != null) { //convert image to byte MemoryStream ms = new MemoryStream(); picperson.Image.Save(ms, picperson.Image.RawFormat); arrImage = ms.GetBuffe

如果用户未为picturebox设置图像,请将empy图像保存在表中

我的代码是:

 byte[] arrImage;
 if (picperson.Image != null)
 {
     //convert image to byte
     MemoryStream ms = new MemoryStream();
     picperson.Image.Save(ms, picperson.Image.RawFormat);
     arrImage = ms.GetBuffer();
     ms.Close();
 }
 else arrImage = null;

objcommand.Parameters.AddWithValue("@picture", arrImage);
当他添加空图像时,picperson.image.Save(ms,picperson.image.RawFormat)行出现异常

如何将空imag添加到表中



您不能为图像参数传递空值,因此解决方法是在零字节数组中发送:

if (picperson.Image != null) {
     //convert image to byte
} else {
 arrImage = new byte[0];
}
不幸的是,这不会将字段设置为null

如果要将字段设置为null,最好使用单独的查询进行处理,例如:

using (SqlCommand q = new SqlCommand("INSERT INTO M (MyImage) VALUES (null)", cn)
...
它不使用参数

就阅读一些评论而言,似乎需要指定图像格式。尝试使用希望图像保存为的实际格式:

picperson.Image.Save(ms, ImageFormat.Bmp);
// or
picperson.Image.Save(ms, ImageFormat.Jpeg);  // or Png, etc.

选择任何图像,并在需要添加null时添加它。。。简单!!好悲伤。。。我不知道这个人在说什么。我知道我的英语不是很好,但仍然是。“但当我想添加错误”。。。这是什么意思?桌子的尺寸变大了@这意味着当他添加
null
image时,第
picperson.image.Save(ms,picperson.image.RawFormat)行出现异常visual studio在picperson.Image.Save(ms,picperson.Image.RawFormat)上突出显示此代码工作正常,但当我想在datagridview中查看表时出错。@anfd这听起来像是一个新问题。请尝试用适当的文档(如错误消息)发布它,如果可能的话,提供足够的代码,以便读者能够理解手头的问题。当然,首先尝试研究一下,看看这个问题以前是否已经解决过。