共用方式為


SQLDisconnect 函式

一致性
引進版本:ODBC 1.0 標準合規性:ISO 92

摘要
SQLDisconnect 關閉與特定連接句柄相關聯的連線。

語法

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

參數

ConnectionHandle
[輸入]連接句柄。

返回

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR、SQL_INVALID_HANDLE或SQL_STILL_EXECUTING。

診斷

SQLDisconnect 傳回SQL_ERROR或SQL_SUCCESS_WITH_INFO時,可能會呼叫 SQLGetDiagRec,並以 SQL_HANDLE_DBC HandleType,以及 ConnectionHandleHandle 來取得相關聯的 SQLSTATE 值。 下表列出 SQLDisconnect 通常傳回的 SQLSTATE 值,並說明此函式內容中的每個值:表示法 “(DM)” 在驅動程式管理員傳回的 SQLSTATE 描述之前。 除非另有說明,否則與每個 SQLSTATE 值相關聯的傳回碼會SQL_ERROR。

SQLSTATE 錯誤 描述
01000 一般警告 驅動程式特定的資訊訊息。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
01002 中斷連線錯誤 中斷連線期間發生錯誤。 不過,中斷連線成功。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
08003 線上未開啟 (DM) 未開啟 ConnectionHandle 自變數中指定的連接
25000 無效的交易狀態 自變數 ConnectionHandle所指定的連接上有交易。 交易會維持使用中狀態。
HY000 一般錯誤 發生錯誤,其中沒有特定的 SQLSTATE,也沒有定義任何實作特定的 SQLSTATE。 *MessageText 緩衝區中 SQLGetDiagRec 所傳回的錯誤訊息會描述錯誤及其原因。
HY001 記憶體配置錯誤 驅動程式無法配置支援執行或完成函式所需的記憶體。
HY008 作業已取消 已針對 ConnectionHandle啟用異步處理。 已呼叫函式,並在 sqlCancelHandle 函式 完成執行之前,ConnectionHandle上呼叫。 然後在 ConnectionHandle上再次呼叫函式。

已呼叫函式,並在完成執行 SQLCancelHandle 之前,在多線程應用程式中 ConnectionHandle 上呼叫它。
HY010 函式順序錯誤 (DM) 針對與 ConnectionHandle 相關聯的 StatementHandle 呼叫異步執行函式,而且在呼叫 SQLDisconnect 時仍在執行。

(DM) 異步執行函式 (不是此函式)已針對 ConnectionHandle 呼叫,而且在呼叫此函式時仍在執行中。

(DM) SQLExecuteSQLExecDirectSQLBulkOperations,或 SQLSetPos,針對與 ConnectionHandle 相關聯的 StatementHandle 呼叫,並傳回SQL_NEED_DATA。 在針對所有數據執行中參數或數據行傳送數據之前,會呼叫此函式。
HY013 記憶體管理錯誤 無法處理函式呼叫,因為基礎記憶體物件無法存取,可能是因為記憶體不足的情況。
HY117 聯機因為未知的交易狀態而暫停。 只允許中斷連線和唯讀函式。 (DM) 如需暫停狀態的詳細資訊,請參閱 sqlEndTran 函式
HYT01 線上逾時已過期 在數據源回應要求之前,連線逾時期限已過期,且連線仍在使用中。 連線逾時期間是透過 SQLSetConnectAttr設定,SQL_ATTR_CONNECTION_TIMEOUT。
IM001 驅動程式不支援此函式 (DM) 與 ConnectionHandle 相關聯的驅動程式不支援 函式。
IM017 在異步通知模式中停用輪詢 每當使用通知模型時,輪詢就會停用。
IM018 尚未呼叫 SQLCompleteAsync,以完成此句柄上先前的異步操作。 如果句柄上的上一個函式呼叫傳回SQL_STILL_EXECUTING且啟用通知模式 ,則必須在句柄上呼叫 SQLCompleteAsync,才能執行後續處理並完成作業。

評論

如果應用程式在 SQLBrowseConnect 之後呼叫 SQLDisconnect 會傳回SQL_NEED_DATA,並在傳回不同的傳回碼之前,驅動程式會取消連線瀏覽程式,並將連線傳回至未連線狀態。

如果應用程式呼叫 SQLDisconnect,而連接句柄有未完成的交易,驅動程式會傳回 SQLSTATE 25000 (無效的交易狀態),表示交易未變更且連接已開啟。 未完成的交易是未透過 SQLEndTran 認可或回復的交易

如果應用程式在釋放與連線相關聯的所有語句之前,先呼叫 SQLDisconnect,則驅動程式會在成功中斷與數據源的連線之後,釋放這些語句,以及已在連接上明確配置的所有描述項。 不過,如果與連接相關聯的一或多個語句仍在異步執行,SQLDisconnect 會傳回具有 HY010 的 SQLSTATE 值SQL_ERROR (函數順序錯誤)。 此外,SQLDisconnect 會釋放連線上明確配置的所有關聯語句和所有描述項、如果連線處於暫止狀態,或 SQLDisconnect 已成功取消,SQLCancelHandle

如需應用程式如何使用 SQLDisconnect的詳細資訊,請參閱 從數據源或驅動程式中斷連線

中斷與集區連線的連線

如果已針對共用環境啟用連線共用,且應用程式呼叫 該環境中的連線 SQLDisconnect,則會將連線傳回至連線集區,而且仍然可供使用相同共享環境的其他元件使用。

程式代碼範例

請參閱 範例 ODBC 程式SQLBrowseConnect 函式SQLConnect 函式

如需相關信息
配置句柄 SQLAllocHandle 函式
連接到數據源 SQLConnect 函式
使用連接字串或對話框連接到數據源 SQLDriverConnect 函式
執行認可或復原作業 SQLEndTran 函式
釋放連接句柄 SQLFreeConnect 函式

另請參閱

ODBC API 參考
ODBC 頭檔