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

rvalueOut
[输出] (排除可在 rgbValueOut 中返回的 null 终止字节) 的总字节数。

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

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

该参数可以为 null 指针。

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

cbErrorMsgMax
[输入] szErrorMsg 的长度。

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

返回

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

注释

驱动程序调用 SQLDataSourceToDriver 来转换所有数据 (结果集数据、表名称、行计数、错误消息等,) 从数据源传递到驱动程序。 转换 DLL 可能不会转换某些数据,具体取决于数据的类型和转换 DLL 的用途;例如,将字符数据从一个代码页转换为另一个代码页的 DLL 会忽略所有数值和二进制数据。

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

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

尽管 cbValueIncbValueOutMaxcbValueOut 属于 SDWORD 类型, 但 SQLDataSourceToDriver 不一定支持大型指针。

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

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

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