0

我创建了一个加载图像然后将其保存到数据库中的表单。

如果用户没有选择任何图像,我想将值 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));
    }
}
4

2 回答 2

2

你在那条线上做了一些不必要的事情。没有必要使用ToString()它实际上是有害的,因为你会得到一个NullReferenceExceptionif imgData is null。只需将值直接与 进行比较即可null

这会更好,并且对此免疫NullReferenceException

drow[1] = imgData == null ? DBNull.Value : (object)imgData;
于 2012-08-05T16:51:34.080 回答
0

变量 drow 或 imageData 为空。他们需要引用一个对象才能执行数组取消引用或调用 ToString()。调试器应该能够告诉你哪个变量是罪魁祸首。

于 2012-08-05T16:57:07.857 回答