SQLDataSourceToDriver 函式
SQLDataSourceToDriver 支援 ODBC 驅動程序的翻譯。 啟用 ODBC 的應用程式不會呼叫此函式;應用程式會透過 SQLSetConnectAttr要求轉譯。 與 SQLSetConnectAttr 中所指定之 ConnectionHandle 相關聯的驅動程式 會呼叫指定的 DLL,以執行從數據源流向驅動程式的所有數據轉譯。 您可以在 ODBC 初始化檔案中指定預設轉譯 DLL。
語法
BOOL SQLDataSourceToDriver(
UDWORD fOption,
SWORD fSqlType,
PTR rgbValueIn,
SDWORD cbValueIn,
PTR rgbValueOut,
SDWORD cbValueOutMax,
SDWORD * pcbValueOut,
UCHAR * szErrorMsg,
SWORD cbErrorMsgMax,
SWORD * pcbErrorMsg);
參數
fOption
[輸入]選項值。
fSqlType
[輸入]SQL 數據類型。 這個自變數會告知驅動程式如何將 rgbValueIn 轉換成應用程式可接受的窗體。 如需有效 SQL 資料類型的清單,請參閱附錄 D: 資料類型中的 SQL 資料類型 一節。
rgbValueIn
[輸入]要轉譯的值。
cbValueIn
[輸入]rgbValueIn長度。
rgbValueOut
[輸出]翻譯的結果。
注意
轉譯 DLL 不會以 Null 結束這個值。
cbValueOutMax
[輸入]rgbValueOut長度。
[輸出]可在 rgbValueOut 中傳回的位元組總數(不包括 null 終止位元組)。
針對字元或二進位數據,如果此值大於或等於
對於所有其他數據類型,會忽略
自變數可以是 null 指標。
szErrorMsg
[輸出]錯誤訊息的記憶體指標。 除非翻譯失敗,否則這是空字串。
cbErrorMsgMax
[輸入]szErrorMsg長度。
[輸出]可用以 szErrorMsg傳回的位元組總數指標(不包括 null 終止位元組)。 如果此值大於或等於
返回
如果翻譯成功,則為TRUE;如果翻譯失敗,則為 FALSE。
評論
驅動程式會呼叫 SQLDataSourceToDriver,將從數據源傳遞至驅動程式的所有資料(結果集數據、數據表名稱、數據列計數、錯誤訊息等等)。 根據數據的類型和轉譯 DLL 的目的,轉譯 DLL 可能不會轉譯某些數據;例如,將字元數據從一個代碼頁轉譯為另一個代碼頁的 DLL 會忽略所有數值和二進位數據。
fOption 的值會設定為使用 SQL_ATTR_TRANSLATE_OPTION 屬性呼叫 SQLSetConnectAttr 所指定的 vParam 值。 這是一個 32 位值,具有指定翻譯 DLL 的特定意義。 例如,它可以指定特定的字元集轉譯。
如果為 rgbValueIn 指定相同的緩衝區,並 rgbValueOut,則會就地執行緩衝區中的數據轉譯。
雖然 cbValueIn、cbValueOutMax和 屬於 SDWORD 類型,SQLDataSourceToDriver 不一定支援大型指標。
如果 SQLDataSourceToDriver 傳回 FALSE,則數據截斷可能會在轉譯期間發生。 如果
如需翻譯資料的詳細資訊,請參閱 翻譯 DLL。
相關函式
如需相關信息 | 看 |
---|---|
轉譯要傳送至數據源的數據 | SQLDriverToDataSource |
傳回連接屬性的設定 | SQLGetConnectAttr |
設定連接屬性 | SQLSetConnectAttr |