如果 IsDbNull 在插入 DataTable 时不起作用 vb.net

if IsDbNull not working when insert into DataTable vb.net

对不起,我把代码贴错了,现在改成正确的了。
我在这里真的很困惑,无论我做什么,空的数据读取器都会被添加到数据表中并显示在 DataGridView 中!我的代码有什么问题??:

 constring2()
        con2.Close()
        Try
            Dim dt As New DataTable
            dt.Columns.Add("pno")
            dt.Columns.Add("date")
            dt.Columns.Add("atttime", GetType(String))
            con2.Open()
            Dim sq As String = "select * from OLDLOG"
            Dim cmd As New SqlCommand(sq, con2)
            Dim dr As SqlDataReader = cmd.ExecuteReader

            While dr.Read
                Dim ss As Date = dr("DATE")
                Dim xy3 As String
                xy3 = ss.ToString("yyyy/MM/dd")
                If Not IsDBNull(dr("IN_")) Then
                    dt.Rows.Add(dr("BADGENO"), xy3, dr("IN_"))
                End If
                If Not IsDBNull(dr("OUT_")) Then
                    dt.Rows.Add(dr("BADGENO"), xy3, dr("OUT_"))
                End If

            End While
            dr.Close()
            con.Close()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            con.Close()
        End Try   

这是我的代码的结果!,

我想要的是,如果 dr("IN_") 或 dr("OUT_") 为空,则数据将不在数据表中!请问有什么想法吗?谢谢

您可以尝试一下,看看效果如何... IsDBNull 函数指示表达式的计算结果是否为 System.DBNull class 并且在您的情况下它没有。另一方面,DBNull.Value 表示一个不存在的值;例如:一行中的一列可能是 'Null'.

*此外,如果值 ISNOT NULL 并且只是空值,它将通过这些条件。

 'Check if it's not NULL and it's not empty...
 If dr("IN_") IsNot DBNull.Value AndAlso CStr(dr("IN_")).Trim <> "" Then
   dt.Rows.Add(dr("BADGENO"), xy3, dr("IN_"))
 End If
 If dr("OUT_") IsNot DBNull.Value AndAlso CStr(dr("OUT_")).Trim <> "" Then
   dt.Rows.Add(dr("BADGENO"), xy3, dr("OUT_"))
 End If

不从数据库中检索不需要的值怎么样?

Dim sq As String = "SELECT * FROM OLDLOG WHERE [IN_] IS NOT NULL AND [OUT_] IS NOT NULL"