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

D.4.10 エラー処理

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

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

参照

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

Symfoware/RDBで利用者の認証情報を管理している場合(SET SYSTEM PARAMETER文で“USER_CONTROL=YES”を指定)、正常終了に“[Symfoware ODBC Driver][Symfoware Server]JYP2605I 正常終了しました.接続日時:  前回接続日時:”を返却します。

利用者は、この接続日時を記憶しておき、次回の接続時に参照し不正なアクセスがないかを確認する必要があります。

なお、上記メッセージが通知されれることで、ODBCドライバマネージャが各種ODBCドライバのAPIサポートレベルをチェックする際に発生するメッセージ“[Microsoft][ODBCDriver Manager]ドライバの SQLSetConnectAttr は失敗しました”を、正常終了ですが返却します。

このODBCドライバマネージャから返却される不要なメッセージを表示したくない場合には、SQLSTATE(IM006)で判断して表示しない処理を行ってください。

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

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

アプリケーションの手順

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

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

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

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

<%@ language="vbscript" %>
<!-- #include file = "adovbs.inc" -->
<html>
<head>
<title>エラー処理</title>
</head>
<body bgcolor="White">
<b>エラー処理</b>

<hr>

<%
'宣言
Dim OBJdbConnection

'エラーを取得するためエラー発生時に処理を止めないようにする
On Error Resume Next

'1. Connectionオブジェクトの生成と設定
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.ConnectionString = "DSN=DSN01;UID=USER01;PWD=XXXXXX"

'3. コネクション接続
OBJdbConnection.Open

'4. エラー処理
Err_Count = OBJdbConnection.Errors.Count
If Err_Count > 0 Then
    For i = 0 To Err_Count - 1
        msgstr = msgstr & OBJdbConnection.Errors(i).Description & "<br>"
        msgstr = msgstr & "SQLSTATE: " & OBJdbConnection.Errors(i).SQLState & "<br>"
    Next
    Response.Write "Error<br>" & msgstr
    OBJdbConnection.Errors.Clear
Else
    '5.コネクション切断
    OBJdbConnection.Close
End If

'オブジェクトの破棄
Set OBJdbConnection = Nothing

%>

<hr>
</body>
</html>