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

C.2.9 エラー処理

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

On Errorステートメントで、エラー発生時のエラー処理ルーチンを指定します。ADOを使用してODBCエラーが発生した場合、ErrorオブジェクトにSQLSTATEやエラーメッセージなどが格納されます。SQLSTATEやエラーメッセージをキーにしてエラー処理を切り分け、その後の振る舞いを決めることが可能です。

参照

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

ODBC以外のエラーは、Errオブジェクトにエラー情報が格納されます。ODBC以外のエラーの対処方法は、Microsoft Visual Studio .NETドキュメントを参照してください。

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

アプリケーションの手順

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

  2. On Errorステートメントを使用して、エラー処理ルーチンを設定します。

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

  4. エラー処理ルーチンを記述します。
    Errors.Countプロパティで格納されているErrorオブジェクト数を取得します。
    Error.DescriptionプロパティでODBCのエラーメッセージを取得します。
    Error.SQLStateプロパティでSQLSTATEを取得します。
    Error.ClearメソッドでErrorオブジェクトを削除します。
    Err.Descriptionプロパティでエラーメッセージを取得します。
    Err.ClearメソッドでErrオブジェクトを削除します。

    Public Class _Default
        Inherits Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    
            'オブジェクト宣言
            Dim Con As ADODB.Connection
    
            Dim i As Integer
            Dim Err_Count As Integer
            Dim msgstr As String
    
            '1. Connectionオブジェクトの生成と設定(接続文字列を間違えて設定)
            Con = New ADODB.Connection
            Con.ConnectionString = " DSN=DSN01;UID=USER01;PWD=XXXXXX;"
    
            '2. エラー処理ルーチンの設定
            On Error GoTo ErrorProc
    
            '3. コネクション接続(エラー発生)
            Con.Open()
    
            'コネクション切断
            Con.Close()
    
            'オブジェクトの破棄
            Con = Nothing
    
            Exit Sub
    
            '4. エラー処理ルーチン
    ErrorProc:
            Err_Count = Con.Errors.Count
            If Err_Count > 0 Then
                For i = 0 To Err_Count - 1
                    msgstr &= Con.Errors(i).Description & "<br>"
                    msgstr &= "SQLSTATE: " & Con.Errors(i).SQLState & "<br>"
                Next
                Con.Errors.Clear()
            Else
                msgstr &= Err.Description
                Err.Clear()
            End If
            Label1.Text = "Error<br>" & msgstr
            'オブジェクトの破棄
            Con = Nothing
    
        End Sub
    End Class