我有我的代码问题,我花了一天,但无法找出解决方法。错误代码是指定投的无效检查日期值为空 - 指定投射无效
这是非常高的机会是由于我的数据类型值检查日期值是否为空。因为当我删除IF ELSE语句的代码工作正常,我可以更新数据库。
情景是我为访问者提供时钟和停止时间,所以首先访问者时钟然后信息将插入到DB没有时钟输出时间(显然DB中的时钟输出时间将为NULL),后来当访问者计时出来时,我需要验证同一个访问者的计时时间是否为NULL。
下面是我的代码:
Private Sub btn_clockout_Click(sender As Object, e As EventArgs) Handles btn_clockout.Click
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Dim clockouttimestatus As DateTime? = Nothing
Try
con.ConnectionString = "Data Source=LAPTOP-HP;Initial Catalog=COMPANY;Integrated Security=True"
cmd.Connection = con
con.Open()
cmd.CommandText = "select v_clockouttime from visitor where v_id = @txt_visitorid"
cmd.Parameters.Add("@txt_visitorid", SqlDbType.Int).Value = txt_visitorid.Text
clockouttimestatus = cmd.ExecuteScalar()
If IsDBNull(clockouttimestatus) Then
cmd.CommandText = "update visitor set v_clockouttime = @lbl_displaydate where v_id = @txt_visitorid"
cmd.Parameters.Add("@lbl_displaydate", SqlDbType.DateTime).Value = lbl_displaydate.Text
cmd.Parameters.Add("@txt_visitorid", SqlDbType.Int).Value = txt_visitorid.Text
cmd.ExecuteNonQuery()
MessageBox.Show("Visitor ID is successful clockout")
Else
MessageBox.Show("Visitor ID is failed to clockout")
End If
Catch ex As Exception
MessageBox.Show("Error while updating record on table..." & ex.Message, "Update Records")
Finally
con.Close()
End Try
前检查
DbNull
“你的意思是你删除了如果其他但不是更新? –删除'Try Catch'块,您将获得有关抛出异常的所有必需信息。至少你会得到一个行号。因为在你的代码中有三行代码可以抛出'指定的无效'。 – Fabio
@Fabio,我删除了Try Catch块之后,突出显示的代码是三条线的“clockouttimestatus”。 (1)Dim clockouttimestatus As DateTime? = Nothing(2)clockouttimestatus = cmd.ExecuteScalar(),(3)如果IsDBNull(clockouttimestatus)然后 –