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 的长度。

线路板值
[输出] (的字节总数,不包括可在 rgbValueOut 中返回的 null 终止字节) 。

对于字符或二进制数据,如果此值大于或等于 cbValueOutMax则 rgbValueOut 中的数据将被截断为 cbValueOutMax 字节。

对于所有其他数据类型, 将忽略 cbValueOutMax 的值,转换 DLL 假定 rgbValueOut 的大小是使用 fSqlType 指定的 SQL 数据类型的默认 C 数据类型的大小。

“印刷值”参数可以是 null 指针。

szErrorMsg
[输出]指向错误消息存储的指针。 除非转换失败,否则这是一个空字符串。

cbErrorMsgMax
[输入] szErrorMsg 的长度。

印制板ErrorMsg
[输出]指向总字节数的指针, (不包括可在 szErrorMsg 中返回的 null 终止字节) 。 如果此值大于或等于 cbErrorMsg则 szErrorMsg 中的数据将被截断为 cbErrorMsgMax 减去 null 终止字符。 “oemErrorMsg”参数可以是 null 指针。

返回

如果转换成功,则为 TRUE;如果转换失败,则为 FALSE。

注释

驱动程序调用 SQLDriverToDataSource 来转换所有数据 (SQL 语句、参数等,) 从驱动程序传递到数据源。 转换 DLL 可能不会转换某些数据,具体取决于数据的类型和转换 DLL 的用途。 例如,将字符数据从一个代码页转换为另一个代码页的 DLL 会忽略所有数值和二进制数据。

fOption 的值设置为通过使用 SQL_ATTR_TRANSLATE_OPTION 属性调用 SQLSetConnectAttr 指定的 vParam 值。 它是一个 32 位值,对给定翻译 DLL 具有特定含义。 例如,它可以指定特定的字符集转换。

如果为 rgbValueInrgbValueOut 指定了相同的缓冲区,则将就地执行缓冲区中的数据转换。

尽管 cbValueIncbValueOutMaxcbValueOut 的类型为 SDWORD, 但 SQLDriverToDataSource 不一定支持大型指针。

如果 SQLDriverToDataSource 返回 FALSE,则可能在转换期间发生了数据截断。 如果 ( 输出缓冲区中可返回的字节数) 大于 cbValueOutMax (输出缓冲区) 的长度,则会发生截断。 驱动程序必须确定截断是否可接受。 如果未发生截断, SQLDriverToDataSource 由于另一个错误而返回 FALSE。 在任一情况下, szErrorMsg 中都返回特定的错误消息。

有关转换数据的详细信息,请参阅 翻译 DLL

有关以下方面的信息 请参阅
转换从数据源返回的数据 SQLDataSourceToDriver
返回连接属性的设置 SQLGetConnectAttr
设置连接属性 SQLSetConnectAttr