如果 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"
对不起,我把代码贴错了,现在改成正确的了。
我在这里真的很困惑,无论我做什么,空的数据读取器都会被添加到数据表中并显示在 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"