SQLSetConnectOption 映射

当 ODBC 2。x 应用程序通过 ODBC 3*.x* 驱动程序调用 SQLSetConnectOption ,调用

SQLSetConnectOption(hdbc, fOption, vParam)  

结果如下所示:

  • 如果 fOption 指示 ODBC 定义的需要字符串的连接属性,则驱动程序管理器将调用

    SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, SQL_NTS)  
    
  • 如果 fOption 指示返回 32 位整数值的 ODBC 定义的连接属性,驱动程序管理器将调用

    SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, 0)  
    
  • 如果 fOption 指示驱动程序定义的连接属性,驱动程序管理器将调用

    SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, BufferLength)  
    

在上述三种情况下, ConnectionHandle 参数设置为 hdbc 中的值, Attribute 参数设置为 fOption 中的值, ValuePtr 参数设置为 与 vParam 相同的值。

由于驱动程序管理器不知道驱动程序定义的连接属性需要字符串还是 32 位整数值,因此它必须为 SQLSetConnectAttrBufferLength 参数传递有效值。 如果驱动程序已为驱动程序定义的连接属性定义了特殊语义,并且需要使用 SQLSetConnectOption 调用,则它必须支持 SQLSetConnectOption

如果为 ODBC 2。x 应用程序调用 SQLSetConnectOption 以在 ODBC 3*.x* 驱动程序中设置特定于驱动程序的语句选项,并且该选项在 ODBC 2 中定义。驱动程序的 x 版本,应为 ODBC 3*.x* 驱动程序中的 选项定义新的清单常量。 如果在调用 SQLSetConnectOption 时使用了旧清单常量,则驱动程序管理器将调用 StringLength 参数设置为 0 的 SQLSetConnectAttr

对于 ODBC 3*.x* 驱动程序,驱动程序管理器不再检查 fOption 是否在 SQL_CONN_OPT_MIN 和 SQL_CONN_OPT_MAX 之间,或者是否大于SQL_CONNECT_OPT_DRVR_START。

连接级别的设置语句选项

在 ODBC 2 中。x,应用程序可以调用 SQLSetConnectOption 来设置语句选项。 完成此操作后,驱动程序会将 语句选项建立为以后为该连接分配的任何语句的默认值。 驱动程序是否为与指定连接关联的任何现有语句设置 语句选项,都是由驱动程序定义的。

此功能已在 ODBC 3*.x* 中弃用。 ODBC 3*.x* 驱动程序只需支持设置 ODBC 2。连接级别的 x 语句属性(如果它们想要使用 ODBC 2)。执行此操作的 x 应用程序。 ODBC 3*.x* 应用程序绝不应在连接级别设置语句属性。 ODBC 3*.x* 语句属性不能在连接级别设置,SQL_ATTR_METADATA_ID和SQL_ATTR_ASYNC_ENABLE属性除外,它们既是连接属性又是语句属性,可以在连接级别或语句级别设置。