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 具有特定含义。 例如,它可以指定特定的字符集转换。
如果为 rgbValueIn 和 rgbValueOut 指定了相同的缓冲区,则将就地执行缓冲区中的数据转换。
尽管 cbValueIn、 cbValueOutMax 和 cbValueOut 的类型为 SDWORD, 但 SQLDriverToDataSource 不一定支持大型指针。
如果 SQLDriverToDataSource 返回 FALSE,则可能在转换期间发生了数据截断。 如果 ( 输出缓冲区中可返回的字节数) 大于 cbValueOutMax (输出缓冲区) 的长度,则会发生截断。 驱动程序必须确定截断是否可接受。 如果未发生截断, SQLDriverToDataSource 由于另一个错误而返回 FALSE。 在任一情况下, szErrorMsg 中都返回特定的错误消息。
有关转换数据的详细信息,请参阅 翻译 DLL。
相关函数
有关以下方面的信息 | 请参阅 |
---|---|
转换从数据源返回的数据 | SQLDataSourceToDriver |
返回连接属性的设置 | SQLGetConnectAttr |
设置连接属性 | SQLSetConnectAttr |