仕様: | DB2 CLI 1.1 | ODBC 1.0 | ISO CLI |
SQLDisconnect() は、データベース接続ハンドルに関連した接続をクローズします。
この接続に未解決のトランザクションがある場合、SQLDisconnect() を呼び出す前に、 SQLEndTran() を呼び出す必要があります。
この関数を呼び出した後で、SQLConnect() を呼び出して別のデータベースに接続するか、 SQLFreeHandle() を呼び出します。
構文
SQLRETURN SQLDisconnect (SQLHDBC ConnectionHandle;) /* hdbc */
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHDBC | ConnectionHandle | 入力 | 接続ハンドル |
使用法
アプリケーションが接続に関連したすべてのステートメント・ハンドルを解放する前に SQLDisconnect() を呼び出すと、 DB2 CLI はデータベースから正常に切断した後にそれらのステートメント・ハンドルを解放します。
SQL_SUCCESS_WITH_INFO が返された場合、それは、データベースからの切断が正常に行われた場合でも、追加のエラーや処理系特定の情報を使用できることを暗黙指定します。たとえば、切断以後のクリーンアップで問題が発生した場合や、アプリケーションとは無関係に発生した事象 (通信障害など) のために現行の接続がない場合があります。
SQLDisconnect() 呼び出しに成功した後、アプリケーションは ConnectionHandle を再利用して別の SQLConnect() または SQLDriverConnect() 要求を行うことができます。
アプリケーションは、SQLDisconnect() によってカーソルをクローズしてはなりません (ストアード・プロシージャーの場合も通常のクライアント・アプリケーションの場合も同様)。どちらの場合も、SQLCloseCursor() を使用してカーソルをクローズし、 HandleType を SQL_HANDLE_STMT に指定して SQLFreeHandle() を実行することにより、ステートメント・ハンドルを解放してください。
戻りコード
診断
SQLSTATE | 説明 | 解説 | ||
---|---|---|---|---|
01002 | 切断エラーです。 | 切断時にエラーが発生しました。しかし、切断は成功しました。 (関数は、SQL_SUCCESS_WITH_INFO を返します。) | ||
08003 | 接続がクローズされています。 | 引き数 ConnectionHandle で指定された接続がオープンしていませんでした。 | ||
25000 25501 | トランザクション状態が無効です。 | 引き数 ConnectionHandle で指定された接続に処理中のトランザクションがありました。トランザクションは活動状態であり、接続を切断できません。
| ||
25501 | トランザクション状態が無効です。 | 引き数 ConnectionHandle で指定された接続に処理中のトランザクションがありました。トランザクションは活動状態であり、接続を切断できません。 | ||
58004 | 予期しないシステム障害です。 | 回復不能システム・エラー。 | ||
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。 | ||
HY010 | 関数の順序エラーです。 | 実行時データ (SQLParamData()、SQLPutData()) 操作中に、関数が呼び出されました。 | ||
HY013 | 予期しないメモリーのハンドル・エラーが起きました。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを使用することができませんでした。 |
制約
なし。
(ここで完全サンプル 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 ) ; }
参照