我创建了一个加载图像的表单,然后将其保存到数据库中。
如果用户没有选择任何图像,我想将值NULL保存到数据库中。
我试过这段代码:
drow[1] = string.IsNullOrEmpty(imgData.ToString()) ? DBNull.Value : (object)imgData;
但它给了我这个错误:
对象引用未设置为对象的实例
这是我用来加载图片的代码:
private void simpleButton5_Click_1(object sender, EventArgs e)
{
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
picture.ImageLocation = openFileDialog1.FileName;
imgData = File.ReadAllBytes(openFileDialog1.FileName);
}
}
catch (Exception ex)
{
// Could not load the image - probably related to Windows file system permissions.
XtraMessageBox.Show(String.Format("Cannot display the image.\n You may not have permission to read the file, or it may be corrupt.\n\nReported error: {0}", ex.Message));
}
}
答案 0 :(得分:2)
你正在做那些不必要的事情。没有必要使用ToString()
,这实际上是有害的,因为如果NullReferenceException
imgData
,您将获得null
。只需将该值直接与null
进行比较。
这会更好,并且不受NullReferenceException
的影响:
drow[1] = imgData == null ? DBNull.Value : (object)imgData;
答案 1 :(得分:0)
变量drow或imageData为null。他们需要引用一个对象才能执行数组解除引用或调用ToString()。调试器应该能够显示哪个变量是罪魁祸首。