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 终止字节)。

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

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

参数可以是 null 指针。

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

cbErrorMsgMax
[输入]szErrorMsg的长度。


[输出]指向可用于 szErrorMsg中返回的字节总数(不包括 null 终止字节) 的指针。 如果这大于或等于 cbErrorMsgszErrorMsg 中的数据将被截断为 cbErrorMsgMax 减去 null 终止字符。
参数可以是 null 指针。

返回

如果翻译成功,则为 TRUE;如果翻译失败,则为 FALSE。

评论

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

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

如果为 rgbValueIn 指定了同一缓冲区,并且 rgbValueOut,将就地执行缓冲区中的数据转换。

尽管 cbValueIncbValueOutMax 属于 SDWORD 类型,SQLDataSourceToDriver 不一定支持巨大的指针。

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

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

有关
转换要发送到数据源的数据 SQLDriverToDataSource
返回连接属性的设置 SQLGetConnectAttr
设置连接属性 SQLSetConnectAttr