0

我正在dataGridView从一个不完整的 excel 电子表格中填充一个并从dataGridView. 在最近的更新之前,我没有任何问题。现在我收到错误“无法将对象从 DBNull 转换为其他类型”。我可以通过在原始电子表格中包含虚拟值来解决这个问题。但最终我们需要看看我们遗漏了哪些信息。我怎样才能做到这一点?

    public void CreateDatabase()
    {
        using (var db = new LiteDatabase(@"C:\Users\BThatcher\Documents\_Personal\Revit\MDL-Sheets\SheetDatabase04.db")) //< ----------------
        {
            var sheets = db.GetCollection<Sheet>("sheets");

            foreach (DataGridViewRow row in dataGridView2.Rows)
            {
                var sheet = new Sheet
                {
                    SheetSequence = Convert.ToInt32(row.Cells[0].Value),
                    SheetNumber = row.Cells[1].Value.ToString(),
                    SheetName = row.Cells[2].Value.ToString(),
                    AreaNumber = Convert.ToInt32(row.Cells[3].Value),
                    AreaName = row.Cells[4].Value.ToString(),
                    SheetDiscipline = row.Cells[5].Value.ToString(),
                    DisciplineSort = Convert.ToInt32(row.Cells[6].Value),
                    SheetSort = Convert.ToInt32(row.Cells[7].Value),
                    ModelName = row.Cells[8].Value.ToString(),
                    AppearsInSheetlist = row.Cells[9].Value.ToString(),
                    DesignedBy = row.Cells[10].Value.ToString(),
                    DrawnBy = row.Cells[11].Value.ToString(),
                    CheckedBy = row.Cells[12].Value.ToString(),
                    ApprovedBy = row.Cells[13].Value.ToString(),
                    SheetTotal = Convert.ToInt32(row.Cells[14].Value),
                    DesignSoftware = row.Cells[15].Value.ToString(),
                    HasPdf = row.Cells[16].Value.ToString(),
                    PdfPath = row.Cells[17].Value.ToString(),                        
                };
                sheets.Insert(sheet);                    

                this.Close();
            }
        }
    }
4

1 回答 1

0

此错误不是来自 LiteDB(LiteDB 中没有DBNull)。这可能DBNullrow.Cells[n].Value您尝试转换时得到的。

LiteDB 支持空值和可空值(如int?)。

于 2020-02-17T13:43:58.753 回答