vb.net错误;列'作者'的值在表格'书籍'是DBNull

时间:2014-03-15 11:04:55

标签: vb.net dataset database dbnull

这是我以前做过的一个项目,但在丢失源代码之后,我正在重写这个。但我遇到了一个我之前没有遇到过的错误。 (有关信息:Column确实有一些空值。)

以下代码来自我的数据集设计器,在本例中为“BooksDataSet”。我在Return CType(Me(Me.tableBooks.AuthorColumn), String)得到错误,说返回值是dbnull,因此无法转换为字符串类型。由于这是自动生成的代码,我认为没有理由出现此错误。

 <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
     Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
    Public Property Author() As String
        Get
            Try
                Return CType(Me(Me.tableBooks.AuthorColumn), String)
            Catch e As Global.System.InvalidCastException
                Throw New Global.System.Data.StrongTypingException("The value for column 'Author' in table 'Books' is DBNull.", e)
            End Try
        End Get
        Set(ByVal value As String)
            Me(Me.tableBooks.AuthorColumn) = value
        End Set
    End Property

起初我想通过添加处理dbnul的代码块来处理它,如:

       Try
            If IsDBNull(Me.tableBooks.AuthorColumn) then
                return String.Empty
            Else : Return CType(Me.tableBooks.AuthorColumn, String)
            EndIF
        Catch e As Global.System.InvalidCastException
            Throw New Global.System.Data.StrongTypingException("The value for column 'Author' in table 'Books' is DBNull.", e)
        End Try

但是必须将代码块插入到每个部分中(表中有很多列我的代码我为了简单起见而跳过了。)这真的很无聊。

我可以插入上面的代码来处理dbnull但是每次构建我的解决方案时,该代码都会被自动生成。为许多不同的列添加那些代码是令人厌倦的。应该对数据集或我忽略的东西进行一些调整?

那么任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

只需编写ToString()

例如:

Me.tableBooks.AuthorColumn.ToString