驅動程式管理員的用途
下表摘要說明 ODBC 3.x 驅動程式管理員如何將呼叫對應至 ODBC 2.x 和 ODBC 3.x 驅動程式。
函式或 陳述式屬性 |
註解 |
---|---|
SQL_ATTR_FETCH_BOOKMARK_PTR | 指向要搭配 SQLFetchScroll 使用的書籤。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會快取它。 它會取值指標,並在應用程式稍後呼叫 SQLFetchScroll 時 ,在 SQLExtendedFetch 的 FetchOffset 引數中,將值傳遞至 ODBC 2.x 驅動程式。 - 當應用程式在 ODBC 3.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會將呼叫傳遞給驅動程式。 |
SQL_ATTR_ROW_STATUS_PTR | 指向由 SQLFetch、SQLFetchScroll、SQLBulkOperations 和 SQLSetPos 填滿的資料列狀態陣列。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中設定這個值時,ODBC 3.x 驅動程式管理員會快取其值。 它會在呼叫 SQLFetchScroll 或 SQLFetch 時 ,將此值傳遞至 SQLExtendedFetch 的 RowStatusArray 引數中的 ODBC 2.x 驅動程式。 - 當應用程式在 ODBC 3.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會將呼叫傳遞給驅動程式。 - 在狀態 S6 中,如果應用程式設定SQL_ATTR_ROW_STATUS_PTR,然後呼叫 SQLBulkOperations (具有 SQL_ADD 的作業 )或 SQLSetPos 而不先呼叫 SQLFetch 或 SQLFetchScroll ,則會傳回 SQLSTATE HY011 (現在無法設定屬性)。 |
SQL_ATTR_ROWS_FETCHED_PTR | 指向 SQLFetch 和 SQLFetchScroll 將擷取的資料列數目傳回的緩衝區。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中設定這個值時,ODBC 3.x 驅動程式管理員會快取其值。 當應用程式呼叫 SQLFetch 或 SQLFetchScroll 時 ,它會將此值傳遞至 SQLExtendedFetch 的 RowCountPtr 引數中的 ODBC 2.x 驅動程式。 - 當應用程式在 ODBC 3.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會將呼叫傳遞給驅動程式。 |
SQL_ATTR_ROW_ARRAY_SIZE | 設定資料列集大小。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會將它對應至 SQL_ROWSET_SIZE 語句屬性。 - 當應用程式在 ODBC 3.x 驅動程式中設定此專案時,ODBC 3.x 驅動程式管理員會將呼叫傳遞給驅動程式。 - 當使用 ODBC 3.x 驅動程式的應用程式呼叫 SQLSetScrollOptions 時,如果基礎驅動程式不支援 SQLSetScrollOptions ,SQL_ROWSET_SIZE會設定為 RowsetSize 引數中的 值。 |
SQL_ROWSET_SIZE | 當 ODBC 2.x 應用程式呼叫 SQLExtendedFetch 時 ,設定 SQLExtendedFetch 所使用的 資料列集大小。 下列是實作詳細資料: - 當應用程式設定此專案時,不論驅動程式版本為何,ODBC 3.x 驅動程式管理員都會將呼叫傳遞給驅動程式。 - 當使用 ODBC 2.x 驅動程式的應用程式呼叫 SQLSetScrollOptions 時,SQL_ROWSET_SIZE會設定為 RowsetSize 引數中的 值。 |
SQLBulkOperations | 執行插入作業,或依書簽作業更新、刪除或擷取。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中使用 SQL_ADD 作業 呼叫 SQLBulkOperations 時,ODBC 3.x 驅動程式管理員會將它對應至 具有 SQL_ADD 作業 的 SQLSetPos 。 - 使用不支援 SQLSetPos 的 ODBC 2.x 驅動程式搭配 SQL_ADD 作業 時,ODBC 3.x 驅動程式管理員不會將 SQLSetPos 與 SQL_ADD 作業 對應 至 具有 SQL_ADD 作業 的 SQLBulkOperations 。 這是因為 SQLBulkOperations 無法在狀態 S7 中呼叫,在 ODBC 2.x 中是唯一可以呼叫 SQLSetPos 的狀態 。 - 如果應用程式在呼叫 SQLFetchScroll 之前,呼叫 ODBC 2.x 驅動程式中具有 SQL_ADD 作業 的 SQLBulkOperations ,ODBC 3.x 驅動程式管理員會傳回錯誤。 |
SQLExtendedFetch | 傳回指定的資料列集。 除了剛才指出的限制之外,不論驅動程式版本為何,ODBC 3.x 驅動程式管理員都會將呼叫 傳遞給驅動程式的 SQLExtendedFetch 。 |
SQLFetch | 傳回下一個資料列集。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中呼叫 SQLFetch 時,ODBC 3.x 驅動程式管理員會將它對應至 SQLExtendedFetch 。 SQLExtendedFetch 的 FetchOrientation 引數會設定為 SQL_FETCH_NEXT。 Driver Manager 會針對 RowStatusArray 引數使用 SQL_ATTR_ROW_STATUS_PTR 語句屬性 的快取值,以及 RowCountPtr 引數之 SQL_ATTR_ROWS_FETCHED_PTR 語句屬性的 快取值。 - ODBC 3.x 應用程式可以混合對 ODBC 2.x 驅動程式中 SQLFetch 和 SQLFetchScroll 的呼叫 ,因為 ODBC 3.x 驅動程式管理員會在應用程式在 ODBC 2.x 驅動程式中呼叫 SQLFetch 時,將 SQLFetch 對應 至 SQLExtendedFetch 。 - 如果 ODBC 2.x 驅動程式不支援 SQLExtendedFetch ,當應用程式在該驅動程式中呼叫 SQLFetch 時,ODBC 3.x 驅動程式管理員不會將 SQLFetch 或 SQLFetchScroll 對應 至 SQLExtendedFetch 。 如果應用程式嘗試將SQL_ATTR_ROW_ARRAY_SIZE設定為大於 1 的值,則會傳回 SQLSTATE HYC00 (未實作的選擇性功能)。 - 除了剛才指出的限制以外,不論驅動程式版本為何,ODBC 3.x 驅動程式管理員都會將呼叫傳遞給 驅動程式的 SQLFetch 。 |
SQLFetchScroll | 傳回指定的資料列集。 下列是實作詳細資料: - 當應用程式在 ODBC 2.x 驅動程式中呼叫 SQLFetchScroll 時,ODBC 3.x 驅動程式管理員會將它對應至 SQLExtendedFetch 。 它會針對 RowStatusArray 引數使用 SQL_ATTR_ROW_STATUS_PTR 語句屬性 的快取值,以及 RowCountPtr 引數之 SQL_ATTR_ROWS_FETCHED_PTR 語句屬性的 快取值。 如果 SQLFetchScroll 中的 FetchOrientation 引數SQL_FETCH_BOOKMARK,它會針對 FetchOffset 引數使用 SQL_ATTR_FETCH_BOOKMARK_PTR 語句屬性 的快取值,如果 SQLFetchScroll 的 FetchOffset 引數不是 0,則會傳回錯誤。 - 當應用程式在 ODBC 3.x 驅動程式中呼叫這個時,ODBC 3.x 驅動程式管理員會將呼叫傳遞給驅動程式。 |
SQLSetPos | 執行各種定位作業。 不論驅動程式版本為何,ODBC 3.x Driver Manager 都會將呼叫傳遞給 驅動程式的 SQLSetPos 。 |
SQLSetScrollOptions | 當 Driver Manager 將 SQLSetScrollOptions 對應給使用不支援 SQLSetScrollOptions 之 ODBC 3.x 驅動程式的應用程式時,Driver Manager 會將 SQL_ROWSET_SIZE 語句選項,而不是 SQL_ATTR_ROW_ARRAY_SIZE 語句屬性,設定為 SQLSetScrollOption 中的 RowsetSize 引數。 因此,呼叫 SQLFetch 或 SQLFetchScroll 時 , 應用程式無法使用 SQLSetScrollOptions 。 只有當呼叫 SQLExtendedFetch 擷取多個資料列時,才能使用它。 |