Цикл в попытке ... поймать - PullRequest
0 голосов
/ 16 февраля 2011

Хорошо, у меня есть попытка ... поймать, что:

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

Вышеуказанное будет работать только для первого экземпляра. То, что я хочу сделать, это продолжать отображать поле ввода, пока д-р не будет успешным (т.е. значения были получены из базы данных.

Я знаю, что мне нужно какое-то время, но я не уверен, как поступить

Ответы [ 4 ]

2 голосов
/ 16 февраля 2011

Посмотрите здесь , почему это не очень хорошая идея.

Если вам все еще интересно, вы можете попробовать это:

   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, если вы хотите повторить попытку немедленно. </p>

2 голосов
/ 16 февраля 2011

Удалите executeSelect изнутри блока catch, в противном случае вы можете также сгенерировать исключение, и его нужно будет перехватить, и т. Д. Поместите весь блок try catch в цикл while и выйдите, когда у вас будет значение для листа.

1 голос
/ 16 февраля 2011

Это может сработать:

    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
0 голосов
/ 16 февраля 2011

Блок Catch предназначен для обработки исключений, а не для выполнения запросов к базе данных ... Вы должны использовать способ Джеффа. То же самое я писал, но он быстрее чем я

...