LabWindows/CVI SQL Toolkit の関数を使用したとき、「Native error code message」 が出るのはなぜですか



使用ソフトウェア: LabWindows/CVI Add-ons>>Enterprise Connectivity Toolset
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題: LabWindows/CVI SQL Toolkit の関数を呼び出すと、「Native error code message」というエラーが出ることがあります。これはなぜですか。


解決策: 「Native error code」は下位のデータベースや Windows ADO が返すエラーです。この種のエラーは SQL Toolkit や CVI 自体のコードが間違っているのではなく、データベースに対する操作がサポートされていない場合がほとんどです。もっとも多いのは不適切な SQL ステートメントをデータベースに送ったり、特定の関数を誤った方法で実行したりする場合です。

ナショナルインスツルメンツは、特定のデータベースがサポートする、またはサポートしないといった内容の技術サポートはいたしかねます。この種のサポートは、各データベースのベンダーが、より適切な対応ができるからです。SQL Toolkit はデータベースで発生したエラーや不適切な操作があったことを検出し、エラーとして開発者に対して情報を提供します。

関数呼び出しで特定のエラーが出ているかどうか確認するには、以下の内容をご参照ください。これは LabWindows/CVI SQL Toolkit Reference Manual から引用し、和訳したものです。

SQL ライブラリ関数は、3種類の戻り値があります。実行結果のコード、ハンドル、データです。実行結果のコードを DB_SUCCESS 定数と比較することで、エラーが起きたか確認できます。ハンドルはデータベースとの接続や SQL ステートメントを参照します。関数がハンドルを返す場合、ハンドルの値が 0 以下であればエラーであることを意味します。その後、DBError 関数を呼び出して、エラー番号を取得します。また DBErrorMessage 関数を呼び出すと、エラーメッセージを取得できます。DBColumnName のように、データを返す関数では、DBError 関数を呼び出してエラーがあったかどうかを確認する必要があります。


hdbc = DBConnect (hdbc);
if (hdbc <= 0) {
errorCode = DBError();
errorMsg = DBErrorMsg();
printf("Error number %d\n%s\n", errorCode, errorMsg);
}


エラーが Native error (通常は DBError の戻り値が DB_ODBC_ERROR、DB_DBSYS_ERROR、DB_AUTOMATION_ERROR) だった場合、 DBNativeError 関数を呼び出して、使用中のデータベースや ADO のエラーコードを取得し、データベースのマニュアル等で、どのようなエラーが起こったか確認します。

関連リンク: Product Manuals: LabWindows/CVI SQL Toolkit Reference Manual (January 2002)

Microsoft Universal Data Access


添付:





報告日時: 07/25/2001
最終更新日: 06/29/2005
ドキュメントID: 2BOERBEV