ページの先頭行へ戻る
Symfoware Server V12.4.0 アプリケーション開発ガイド(ODBCドライバ編)
FUJITSU Software

B.5.10 エラー処理

エラー処理を行うサンプルコードについて説明します。

TryステートメントからCatchステートメントの範囲内にエラーが発生する可能性のあるコードを記述し、Catchステートメントでエラー発生時のエラー処理を記述します。ADO.NETを使用してODBCエラーが発生した場合、OdbcExceptionクラスをキャッチすることで、SQLSTATEやエラーメッセージなどが確認できます。SQLSTATEやエラーメッセージをキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。

参照

エラーメッセージの対処方法は“メッセージ集”を参照してください。

ODBC以外のエラーは、Exceptionクラスをキャッチすることでエラー情報が確認できます。ODBC以外のエラーの対処方法は、Microsoft Visual Studio .NET ドキュメントを参照してください。

本サンプルコードでは、接続文字列を間違えて入力しエラーを発生させます。発生したエラーのメッセージとSQLSTATEをメッセージボックスに表示します。

アプリケーションの手順

  1. OdbcConnectionオブジェクトを生成します。(ConnectionStringプロパティに接続文字列を間違えて設定します。)

  2. TryステートメントからCatchステートメントの範囲内にエラーが発生する可能性のあるコードを記述します。

  3. OdbcConnection.Openメソッドでコネクションを接続します。(パスワードを間違えて指定しエラーを発生させます)

  4. Catchステートメントに処理したいエラーのクラスを指定します。
    OdbcException.Errors.CountプロパティでODBCのエラー数を取得します。
    OdbcException.Errors.MessageプロパティでODBCのエラーメッセージを取得します。
    OdbcException.Errors.SQLStateプロパティにでSQLSTATEを取得します。
    Exception.MessageプロパティでODBC以外のエラーメッセージを取得します。

  5. 処理がすべて行われた後に行う処理を、Finallyステートメント以降に記述します。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'オブジェクト宣言
        Dim con As System.Data.Odbc.OdbcConnection

        Dim i As Integer
        Dim msgstr As String

        '1. OdbcConnectionオブジェクトの生成(コネクション文字列を間違えて設定)
        con = New System.Data.Odbc.OdbcConnection("DSN=DSN01;UID=USER01;PWD=XXXXXX ")

        '2. Try ~ Catch の範囲内にエラーが発生する可能性のあるコードを記述

        Try

            '3. コネクション接続(エラー発生)
            con.Open()

            'コネクション切断
            con.Close()

            '4. OdbcExceptionクラスのキャッチ
        Catch ex As System.Data.Odbc.OdbcException
            For i = 0 To ex.Errors.Count - 1
                msgstr &= ex.Errors(i).Message & ControlChars.Cr
                msgstr &= "SQLSTATE: " & ex.Errors(i).SQLState & ControlChars.Cr
            Next
            MessageBox.Show(msgstr, "ODBC Error Message",
                    MessageBoxButtons.OK, MessageBoxIcon.Error)

            '4. Exceptionクラスのキャッチ
        Catch ex As Exception
            msgstr = ex.Message
            MessageBox.Show(msgstr, "Error Message",
                    MessageBoxButtons.OK, MessageBoxIcon.Error)

            '5. Tryステートメント終了時の処理
        Finally

            'オブジェクトの破棄
            con.Dispose()

        End Try

    End Sub
End Class