CLI の手引きおよび解説書

SQLDisconnect - データ・サーバーからの切断

目的


仕様: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLDisconnect() は、データベース接続ハンドルに関連した接続をクローズします。

この接続に未解決のトランザクションがある場合、SQLDisconnect() を呼び出す前に、 SQLEndTran() を呼び出す必要があります。

この関数を呼び出した後で、SQLConnect() を呼び出して別のデータベースに接続するか、 SQLFreeHandle() を呼び出します。

構文

SQLRETURN   SQLDisconnect    (SQLHDBC           ConnectionHandle;) /* hdbc */

関数引き数

表 50. SQLDisconnect 引き数
データ・タイプ 引き数 使用法 説明
SQLHDBC ConnectionHandle 入力 接続ハンドル

使用法

アプリケーションが接続に関連したすべてのステートメント・ハンドルを解放する前に SQLDisconnect() を呼び出すと、 DB2 CLI はデータベースから正常に切断した後にそれらのステートメント・ハンドルを解放します。

SQL_SUCCESS_WITH_INFO が返された場合、それは、データベースからの切断が正常に行われた場合でも、追加のエラーや処理系特定の情報を使用できることを暗黙指定します。たとえば、切断以後のクリーンアップで問題が発生した場合や、アプリケーションとは無関係に発生した事象 (通信障害など) のために現行の接続がない場合があります。

SQLDisconnect() 呼び出しに成功した後、アプリケーションは ConnectionHandle を再利用して別の SQLConnect() または SQLDriverConnect() 要求を行うことができます。

アプリケーションは、SQLDisconnect() によってカーソルをクローズしてはなりません (ストアード・プロシージャーの場合も通常のクライアント・アプリケーションの場合も同様)。どちらの場合も、SQLCloseCursor() を使用してカーソルをクローズし、 HandleType を SQL_HANDLE_STMT に指定して SQLFreeHandle() を実行することにより、ステートメント・ハンドルを解放してください。

戻りコード

診断

表 51. SQLDisconnect SQLSTATE
SQLSTATE 説明 解説
01002 切断エラーです。 切断時にエラーが発生しました。しかし、切断は成功しました。 (関数は、SQL_SUCCESS_WITH_INFO を返します。)
08003 接続がクローズされています。 引き数 ConnectionHandle で指定された接続がオープンしていませんでした。
25000 25501 トランザクション状態が無効です。 引き数 ConnectionHandle で指定された接続に処理中のトランザクションがありました。トランザクションは活動状態であり、接続を切断できません。

注:このエラーは、DB2 CLI で作成されたストアード・プロシージャーには適用されません。

25501 トランザクション状態が無効です。 引き数 ConnectionHandle で指定された接続に処理中のトランザクションがありました。トランザクションは活動状態であり、接続を切断できません。
58004 予期しないシステム障害です。 回復不能システム・エラー。
HY001 メモリーの割り振り失敗です。 DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
HY010 関数の順序エラーです。 実行時データ (SQLParamData()SQLPutData()) 操作中に、関数が呼び出されました。
HY013 予期しないメモリーのハンドル・エラーが起きました。 DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを使用することができませんでした。

制約

なし。

CLI サンプル utilcli.c

(ここで完全サンプル utilcli.c を使用することもできます 。)

/* From the CLI sample utilcli.c */
/* ... */
        printf( "\nDisconnecting from the database nb. %d ...\n", db_nb + 1) ;
 
        sqlrc = SQLDisconnect( a_hdbc[db_nb] ) ;
        rc    = HandleInfoPrint( SQL_HANDLE_DBC, a_hdbc[db_nb],
                                 sqlrc, __LINE__, __FILE__);
        if( rc == 0)
        {   printf( "Disconnected from the database nb. %d.\n", db_nb + 1 ) ;
        }
 
 

参照


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]