SQLDrivers 函式

符合性
引進的版本:ODBC 2.0 標準合規性:ODBC

總結
SQLDrivers 列出驅動程式描述與驅動屬性關鍵字。 此功能僅由驅動程式管理器實作。

Syntax

  
SQLRETURN SQLDrivers(  
     SQLHENV         EnvironmentHandle,  
     SQLUSMALLINT    Direction,  
     SQLCHAR *       DriverDescription,  
     SQLSMALLINT     BufferLength1,  
     SQLSMALLINT *   DescriptionLengthPtr,  
     SQLCHAR *       DriverAttributes,  
     SQLSMALLINT     BufferLength2,  
     SQLSMALLINT *   AttributesLengthPtr);  

論點

環境控制
[輸入]環境控制。

方向
[輸入]決定驅動程式管理器是取得清單中的下一個驅動程式描述(SQL_FETCH_NEXT),還是從清單起始搜尋(SQL_FETCH_FIRST)。

DriverDescription
[輸出]指標指向緩衝區,回傳驅動程式描述。

DriverDescriptionNULL,DescriptionLengthPtr 仍會回傳 DriverDescription 指向緩衝區中可返回的字元總數(不含字元資料的 null-終止字元)。

緩衝長度1
[輸入]*DriverDescription 緩衝區的長度,以字元為單位。

描述長度
[輸出]指標指向緩衝區,回傳 *DriverDescription 中可回傳的字元總數(不含空終端字元)。 若可回傳的字元數大於或等於 BufferLength1,則 *DriverDescription 中的驅動描述會被截斷為 BufferLength1 減去空終止字元長度。

DriverAttributes
[輸出]指標指向緩衝區,回傳驅動程式屬性值對清單(見「註解」)。

DriverAttributesNULL,AttributesLengthPtr 仍會回傳 DriverAttributes 指向緩衝區中可返回的總位元組數(不含字元資料的空終止字元)。

緩衝長度2
[輸入]*DriverAttributes 緩衝區的長度,以字元為單位。 若 *DriverDescription 值為 Unicode 字串(呼叫 SQLDriversW 時), BufferLength 參數必須為偶數。

屬性長度
[輸出]指標指向緩衝區,回傳可返回 *DriverAttributes 中可返回的總位元組數(不含空終止位元組)。 若可回傳的位元組數大於或等於 BufferLength2,則 *DriverAttributes 中的屬性值對列表會截斷為 BufferLength2 減去空終止字元長度。

Returns

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR或SQL_INVALID_HANDLE。

Diagnostics

SQLDrivers 回傳 SQL_ERROR 或 SQL_SUCCESS_WITH_INFO 時,可以透過呼叫 SQLGetDiagRec 取得相應的 SQLSTATE 值,並將 HandleType 設為 SQL_HANDLE_ENV,Handle 為 Handle 下表列出 SQLDrivers 通常回傳的 SQLSTATE 值,並在此函式的情境中說明每個值;「(DM)」符號會置於驅動程式管理器回傳的 SQLSTATE 描述前。 除非另有說明,否則與每個 SQLSTATE 值相關聯的傳回碼會SQL_ERROR。

SQLSTATE 錯誤 說明
01000 一般警告 (DM)駕駛經理專屬資訊訊息。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
01004 字串數據,右截斷 (DM) 緩衝區 *DriverDescription 不夠大,無法回傳完整的驅動程式描述。 因此,描述被刪減了。 完整驅動程式描述的長度會回傳在 *DescriptionLengthPtr. (函式會傳回SQL_SUCCESS_WITH_INFO。)

(DM) 緩衝區 *DriverAttributes 不足以回傳完整的屬性值對清單。 因此,該名單被縮短。 未截斷的屬性值對列表長度在 *AttributesLengthPtr 中回傳。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
HY000 一般誤差 發生錯誤,其中沒有特定的 SQLSTATE,也沒有定義任何實作特定的 SQLSTATE。 *MessageText 緩衝區中 SQLGetDiagRec回的錯誤訊息描述錯誤及其原因。
HY001 記憶體配置錯誤 (DM) 驅動程式管理器無法分配支援執行或完成函式所需的記憶體。
HY010 函式順序錯誤 (DM) 已針對 StatementHandle 呼叫 SQLExecuteSQLExecDirectSQLMoreResults,並傳回SQL_PARAM_DATA_AVAILABLE。 在擷取所有數據流參數的數據之前,會呼叫此函式。
HY013 記憶體管理錯誤 無法處理函式呼叫,因為基礎記憶體物件無法存取,可能是因為記憶體不足的情況。
HY090 無效的字串或緩衝區長度 (DM) 參數 BufferLength1 指定的值小於 0。

(DM) 參數 BufferLength2 指定的值小於 0 或 1。
HY103 無效的取回碼 (DM) 論證 Direction 所指定的值不等於 SQL_FETCH_FIRST 或 SQL_FETCH_NEXT。
HY117 聯機因為未知的交易狀態而暫停。 只允許中斷連線和唯讀函式。 (DM) 如需暫停狀態的詳細資訊,請參閱 SQLEndTran 函式

評論

SQLDrivers 會回傳 *DriverDescription 緩衝區中的驅動程式描述。 它會以關鍵字與值對的清單,回傳 *DriverAttributes 緩衝區中驅動程式的額外資訊。 系統資訊中所有驅動程式的關鍵字都會回傳給所有驅動程式,唯獨 CreateDSN 用於提示建立資料來源,因此為可選。 每對以一個空位元組結尾,完整清單則以一個空位元組結束(即兩個空位元組標記列表末尾)。 例如,使用 C 語法的檔案驅動程式可能會回傳以下屬性列表(「\0」代表空字元):

FileUsage=1\0FileExtns=*.dbf\0\0  

若 *DriverAttributes 不足以容納整個清單,則該清單會被截斷, SQLDrivers 會回傳 SQLSTATE 01004(資料截斷),而清單長度(不含最後的空終止位元組)則以 *AttributesLengthPtr 回傳。

驅動程式屬性關鍵字會在安裝驅動程式時,從系統資訊中加入。 欲了解更多資訊,請參閱 安裝 ODBC 元件

應用程式可以多次呼叫 SQLDrivers 以取得所有驅動程式描述。 驅動程式管理器會從系統資訊中取得這些資訊。 當驅動程式描述不再存在時, SQLDrivers 會回傳 SQL_NO_DATA。 如果 SQLDrivers 在回傳 SQL_NO_DATA 後立即被呼叫 SQL_FETCH_NEXT,則會回傳第一個驅動程式描述。 關於應用程式如何使用 SQLDrivers 回傳的資訊,請參閱 選擇資料來源或驅動程式

如果第一次呼叫時就傳給 SQL_FETCH_NEXT,SQLDrivers 會回傳第一個資料來源名稱。

由於 SQLDrivers 是在驅動程式管理員中實作,因此無論特定驅動程式的標準是否符合,所有驅動程式都能獲得支援。

如需相關信息 看!
發現並列出連接資料來源所需的數值 SQLBrowseConnect 函式
連線至資料來源 SQLConnect 函式
回傳資料來源名稱 SQLDataSources 函式
使用 連接字串 或對話框連接到數據源 SQLDriverConnect 函式