0

私はあなたがそれを読んだときにその機能自体をあなたに伝える関数を書きました:

Public Function TestConnect()
    Dim verbinding As MySqlConnection
    Dim errStatus As String

    verbinding = New MySqlConnection()
    verbinding.ConnectionString = "server=" & vardbHost & "; port=" & vardbPort & "; uid=" & vardbUser & "; pwd=" & vardbPass & "; database=" & vardbName & ";"

    Try
        verbinding.Open()
        verbinding.Close()
        errStatus = 0
    Catch myerror As MySqlException
        verbinding.Dispose()
        verbinding.Close()
        errStatus = 1
    End Try

    Return errStatus
End Function

ここで、この関数をメイン フォームで呼び出します。Try を使用して 1 または 0 をキャッチすれば、何かできると思いました。(例: エラー メッセージを含むフォームを表示する) しかし、それはうまくいかないようで、Google で私の問題に当てはまるものを見つけることができませんでした。

なぜ私がそんなに頭が悪いのか、戻り値の処理方法をよりよく理解するにはどうすればよいのか、誰か説明してもらえますか?

4

3 に答える 3

2

関数は値を返しますが、その戻り値を変数に割り当ててから、それを Calling メソッドで使用する必要があります。

Dim errStatus As Integer
errStatus = SQLHook.TestConnect()
If errStatus = 1 Then
    'Show the error form
End If

またはもっと簡単に言えば、返された値を直接テストするだけです。

If SQLHook.TestConnect()= 1 Then
    'Show the error form
End If

また、関数内の変数の入力を実際に整理する必要があります。

Public Function TestConnect() as Boolean
    Dim errStatus As Boolean
    Try
        errStatus = True
    Catch myerror As MySqlException
        errStatus = False
    End Try

    Return errStatus  
End Function

またはもっと簡単に言えば、変数を気にしないでください:

Public Function TestConnect() as Boolean

    Try
        ...
        Return True
    Catch myerror As MySqlException
        ...
        Return False
    End Try
End Function
于 2013-02-22T11:21:37.327 に答える
0
Dim returnCode as Int32 = SQLHook.TestConnect()

MessageBox.show(
         If(returnCode = 1, "OK", "Error"), "AppName", MessageBoxButtons.OK,
         If(returnCode = 1, MessageBoxIcon.Information, MessageBoxIcon.Error)
       ) 
于 2013-02-22T11:26:31.713 に答える
0

質問の意味がよくわからないのですが、こういうことですか?

Public Function TestConnect() As Int32
  ...
  Dim errStatus As Int32
  ...
于 2013-02-22T11:15:39.153 に答える