在我的下面的代码中,如果我的PictureBox(pbspic)为null,我希望返回null数据,否则如果PictureBox(pbspic)包含图片我希望数据返回图片字节,以便我可以在我的数据库中保存null或图片< / p>
using (MemoryStream stream = new MemoryStream())
{
Bitmap bmp = new Bitmap(pbspic.Image);
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
stream.Position = 0;
byte[] data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
return data;
}
cmd.Parameters.Add("@Photo", SqlDbType.VarChar).Value = data;
dm2.ExecActQuery("StudentsInsert", cmd);
答案 0 :(得分:2)
您是否尝试过以下内容? :
else if(pbspic == null) /* Or it could be pbspic.Image == null, depends on which is null */
{
ep.SetError(tbmonfee, "Image is missing.");
return;
}
else
{
using (MemoryStream stream = new MemoryStream())
{
Bitmap bmp = new Bitmap(pbspic.Image);
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
stream.Position = 0;
byte[] data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
}
if(data == null) /* Or check data length if it's never null */
{
ep.SetError(tbmonfee, "Image is missing.");
return;
}
}
答案 1 :(得分:1)
尝试创建一个流的方法,然后调用它来获取像这样的图片
private byte[] GetPic(Image img)
{
using (MemoryStream stream = new MemoryStream())
{
Bitmap bmp = new Bitmap(pbspic.Image);
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
stream.Position = 0;
byte[] data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
return data;
}
}
用法:
if (pbspic.Image == null)
{
cmd.Parameters.Add("@Photo", SqlDbType.VarChar).Value = "NULL";
}
else
{
cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = GetPic(pbspic.Image);
}
dm2.ExecActQuery("StudentsInsert", cmd);