SQLDriverToDataSource 函式

SQLDriverToDataSource 支援 ODBC 驅動程式的翻譯。 啟用 ODBC 的應用程式不會呼叫此函式;應用程式會透過 SQLSetConnectAttr 要求翻譯。 與 SQLSetConnectAttr 中指定的 ConnectionHandle 相關聯的驅動程式會呼叫指定的 DLL,以執行從驅動程式流向資料來源的所有資料轉譯。 您可以在 ODBC 初始化檔案中指定預設轉譯 DLL。

語法

  
BOOL SQLDriverToDataSource(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

引數

FOption
[輸入]選項值。

fSqlType
[輸入]ODBC SQL 資料類型。 這個引數會告知驅動程式如何將 rgbValueIn 轉換成 資料來源可接受的表單。 如需有效 SQL 資料類型的清單,請參閱 SQL 資料類型

rgbValueIn
[輸入]要轉譯的值。

cbValueIn
[輸入]rgbValueIn 長度。

rgbValueOut
[輸出]翻譯的結果。

注意

轉譯 DLL 不會以 Null 結束這個值。

cbValueOutMax
[輸入]rgbValueOut 長度。

pcoValueOut
[輸出]可在 rgbValueOut 傳回的位元組總數(不包括 Null 終止位元組)。

針對字元或二進位資料,如果此值大於或等於 cbValueOutMax ,rgbValueOut 中的資料 會截斷為 cbValueOutMax 位元組。

對於所有其他資料類型,會忽略 cbValueOutMax 的值 ,而轉譯 DLL 會假設 rgbValueOut 的大小 是使用 fSqlType 所指定 SQL 資料類型的預設 C 資料類型 大小。

對等值值 引數可以是 Null 指標。

szErrorMsg
[輸出]錯誤訊息的儲存體指標。 除非翻譯失敗,否則這是空字串。

cbErrorMsgMax
[輸入]szErrorMsg 長度。

pcbErrorMsg
[輸出]可用在 szErrorMsg 傳回的位元組總數指標(不包括 Null 終止位元組)。 如果這大於或等於 cbErrorMsg ,szErrorMsg 中的資料 會截斷為 cbErrorMsgMax 減去 null 終止字元。 oemErrorMsg 引數可以是 Null 指標。

傳回

如果翻譯成功,則為 TRUE;如果翻譯失敗,則為 FALSE。

註解

驅動程式會呼叫 SQLDriverToDataSource ,以轉譯從驅動程式傳遞至資料來源的所有資料(SQL 語句、參數等等)。 轉譯 DLL 可能不會轉譯某些資料,視資料的類型和轉譯 DLL 的用途而定。 例如,將字元資料從一個字碼頁轉譯為另一個字碼頁的 DLL 會忽略所有數值和二進位資料。

fOption 的值 會設定為使用 SQL_ATTR_TRANSLATE_OPTION 屬性呼叫 SQLSetConnectAttr 所指定的 vParam 。 這是一個 32 位值,具有指定翻譯 DLL 的特定意義。 例如,它可以指定特定的字元集轉譯。

如果為 rgbValueIn rgbValueOut 指定了相同的緩衝區,則會就地執行緩衝區中的資料轉譯。

雖然 cbValueIn cbValueOutMax cbValueOut 的類型為 SDWORD, 但 SQLDriverToDataSource 不一定支援大型指標。

如果 SQLDriverToDataSource 傳回 FALSE,則在轉譯期間可能會發生資料截斷。 如果 可以在輸出緩衝區中傳回的位元組數大於 cbValueOutMax (輸出緩衝區的長度),則會發生截斷。 驅動程式必須判斷截斷是否可接受。 如果未發生截斷, SQLDriverToDataSource 會因為另一個錯誤而傳回 FALSE。 在任一情況下,szErrorMsg 會傳回特定的錯誤訊息。

如需翻譯資料的詳細資訊,請參閱 翻譯 DLL

如需下列資訊 請參閱
轉譯從資料來源傳回的資料 SQLDataSourceToDriver
傳回連接屬性的設定 SQLGetConnectAttr
設定連接屬性 SQLSetConnectAttr