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 |