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 终止字节) 的指针。 如果这大于或等于 cbErrorMsg,szErrorMsg 中的数据将被截断为 cbErrorMsgMax 减去 null 终止字符。
返回
如果翻译成功,则为 TRUE;如果翻译失败,则为 FALSE。
评论
驱动程序调用 SQLDataSourceToDriver,以将所有数据(结果集数据、表名称、行计数、错误消息等)从数据源传递到驱动程序。 翻译 DLL 可能不会转换某些数据,具体取决于数据的类型和转换 DLL 的用途;例如,将字符数据从一个代码页转换为另一个代码页的 DLL 将忽略所有数值和二进制数据。
fOption 的值设置为使用 SQL_ATTR_TRANSLATE_OPTION 属性调用 SQLSetConnectAttr 指定的 vParam 的值。 它是一个 32 位值,该值对给定的翻译 DLL 具有特定含义。 例如,它可以指定特定的字符集转换。
如果为 rgbValueIn 指定了同一缓冲区,并且 rgbValueOut,将就地执行缓冲区中的数据转换。
尽管
如果 SQLDataSourceToDriver 返回 FALSE,则转换期间可能会发生数据截断。 如果
有关翻译数据的详细信息,请参阅 翻译 DLL。
相关函数
有关 | 看 |
---|---|
转换要发送到数据源的数据 | SQLDriverToDataSource |
返回连接属性的设置 | SQLGetConnectAttr |
设置连接属性 | SQLSetConnectAttr |