好的,我有一个try..catch这样:
Try
Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
Catch ex As Exception
sheet = InputBox("Re-enter table:")
Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
End Try
以上内容仅适用于第一个实例。 我想要做的是继续显示输入框,直到dr成功(即已从数据库中检索到值。
我知道我需要一些时间,但我不确定如何继续
答案 0 :(得分:2)
从catch块中删除performSelect,否则你也可以在那里抛出异常并且需要捕获等等。将整个try catch块放在while循环中,当你有一个sheet值时退出。
答案 1 :(得分:2)
看看here为什么这不是一个好主意。
如果您仍然感兴趣,可以试试这个:
Dim retries As Integer = 3
While True
Try
Dim sheet as String = InputBox("Enter table:")
Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & sheet, myConn)
Exit While
Catch
retries -= 1
If retries = 0 Then
Throw
Else
System.Threading.Thread.Sleep(1000)
End If
End Try
End While
如果您想要更多(无限 - >< = 0),请更改重试次数,如果您想立即重试,请更改或删除thread.sleep。
答案 2 :(得分:1)
这可能有效:
Dim inputOk As Boolean = False
Do Until inputOk = True
Try
Dim dr As OleDbDataReader = performSelect("SELECT * FROM " & table, myConn)
inputOk = True
Catch ex As Exception
sheet = InputBox("Re-enter table:")
End Try
End
Loop
答案 3 :(得分:0)
Catch块设计用于处理异常,而不是执行数据库查询......您应该使用Jeff的方式。我正在写作,但他比我快。