.net 为什么可以';vb无法捕获查询错误
这是我当前的代码:.net 为什么可以';vb无法捕获查询错误,.net,vb.net,ms-access,.net,Vb.net,Ms Access,这是我当前的代码: Dim query As String = "SELECT * FROM tblPiglets WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig" Using cmd As New OleDbCommand(query, con) With cmd.Parameters .AddWithValue("@week", txtWeek.Text)
Dim query As String = "SELECT * FROM tblPiglets WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig"
Using cmd As New OleDbCommand(query, con)
With cmd.Parameters
.AddWithValue("@week", txtWeek.Text)
.AddWithValue("@so", txtSo.Text)
.AddWithValue("@pig", txtPiglet.Text)
End With
Dim dr As OleDbDataReader = cmd.ExecuteReader()
While dr.Read
Dim loc As String
loc = dr("CurrentLocation").ToString()
If loc = ComboBox1.Text Then
confirmed()
Else
invalid()
End If
End While
End Using
第一个用户必须输入一个唯一的id,即周、sow订单和编号。然后它将检查所选项目的CurrentLocation
字段是否与ComboBox1.Text
相同。如果是,则继续,如果不是,则返回错误。但是,当用户插入不存在的数据时,不会发生任何事情。比如说,我有3个数据(唯一的“id”)
如果我尝试输入2-1-1,这是不存在的,什么也不会发生。我想捕捉这一点,这样用户就会知道这是一个无效的输入。您需要自己检查是否有任何结果。对于SQL查询,如果不返回任何行,则不是错误。
以下代码是此类检查的示例:
Dim dr As OleDbDataReader = cmd.ExecuteReader()
If dr.Read() Then
Do
Dim loc As String
loc = dr("CurrentLocation").ToString()
If loc = ComboBox1.Text Then
confirmed()
Else
invalid()
End If
Loop While dr.Read()
Else
' Add code for no records here
End If
请注意,如果您想专门检查无效id,则需要添加一个特殊检查。上面的示例仅检查是否返回了任何行。原因还可能是没有周或订单的数据。添加一些代码检查dr是否为空
If Not IsNothing(dr) Then
While dr.read....
Else
'No records
End If
这很好,我只是想知道是否存在基于用户输入的数据。谢谢