ODBC エラーを処理する方法 (ODBC)
2 つの ODBC 関数呼び出し SQLGetDiagRec および SQLGetDiagField を使用すると、ODBC メッセージを取得できます。SQLState、pfNative、および ErrorMessage の各診断フィールドの主要な ODBC 関連情報を取得するには、SQL_NO_DATA が返されるまで SQLGetDiagRec を呼び出します。診断レコードごとに、SQLGetDiagField を呼び出して個々のフィールドを取得できます。ドライバ固有のフィールドはすべて、SQLGetDiagField を使用して取得する必要があります。
SQLGetDiagRec および SQLGetDiagField は、個々のドライバではなく、ODBC ドライバ マネージャによって処理されます。ODBC ドライバ マネージャでは、接続が正しく確立されるまでドライバ固有の診断フィールドをキャッシュしません。接続が正しく確立される前に、ドライバ固有の診断フィールドに対して SQLGetDiagField を呼び出すことはできません。これには、SQL_SUCCESS_WITH_INFO が返される場合の ODBC 接続コマンドも含まれます。ドライバ固有の診断フィールドは、次の ODBC 関数呼び出しまで使用できません。
解説
標準の ODBC 情報を取得するために SQLGetDiagRec を呼び出す単純なエラー ハンドラを示す完全なサンプル コードが用意されています。このサンプルでは有効な接続を調べ、有効な接続がある場合は、SQLGetDiagField を呼び出して Microsoft SQL Server ODBC ドライバ固有の診断フィールドを取得します。
完全なサンプル コードは、ProcessODBCErrors.cpp ファイルにあります。このファイルは、MSDN の SQL Server ダウンロード ページからダウンロードできます。このサンプルは、Microsoft Visual C++ 2005 を使用して、ODBC 3.0 以降用に開発されています。
セキュリティに関する注意 |
---|
可能な場合は、Windows 認証を使用します。Windows 認証が使用できない場合は、実行時に資格情報を入力するようユーザーに求めます。資格情報をファイルに保存するのは避けてください。資格情報を保存する必要がある場合は、Win32 Crypto API を使用して暗号化してください。 |