SQLSetConnectAttrForDbcInfo 函数

一致性
引入的版本:ODBC 3.81 标准符合性:ODBC

摘要
SQLSetConnectAttrForDbcInfoSQLSetConnectAttr 相同,但它在连接信息令牌而不是连接句柄上设置 属性。

语法

  
SQLRETURN  SQLSetConnectAttrForDbcInfo(  
                SQLHDBC_INFO_TOKEN    hDbcInfoToken,  
                SQLINTEGER            Attribute,  
                SQLPOINTER            ValuePtr,  
                SQLINTEGER            StringLength );  

参数

hDbcInfoToken
[输入]令牌句柄。

Attribute
[输入]要设置的属性。 有效属性列表特定于驱动程序,与 SQLSetConnectAttr 相同。

ValuePtr
[输入]指向要与 Attribute 关联的值的指针。 根据 Attribute 的值, ValuePtr 将是 32 位无符号整数值,或者将指向以 null 结尾的字符串。 请注意,如果 Attribute 参数是特定于驱动程序的值, ValuePtr 中的值可能是有符号整数。

StringLength
[输入]如果 Attribute 是 ODBC 定义的属性,并且 ValuePtr 指向字符串或二进制缓冲区,则此参数的长度应为 *ValuePtr。 对于字符串数据,此参数应包含字符串中的字节数。

如果 Attribute 是 ODBC 定义的属性, 而 ValuePtr 是整数,则忽略 StringLength

如果 Attribute 是驱动程序定义的属性,则应用程序通过设置 StringLength 参数向驱动程序管理器指示属性的性质。 StringLength 可以具有以下值:

  • 如果 ValuePtr 是指向字符串的指针,则 StringLength 是字符串的长度或SQL_NTS。

  • 如果 ValuePtr 是指向二进制缓冲区的指针,则应用程序会将SQL_LEN_BINARY_ATTR (长度 的结果放在 StringLength 中) 宏中。 这会在 StringLength 中放置负值。

  • 如果 ValuePtr 是指向字符串或二进制字符串以外的值的指针,则 StringLength 应具有值SQL_IS_POINTER。

  • 如果 ValuePtr 包含固定长度的值,则 StringLength 是SQL_IS_INTEGER或SQL_IS_UINTEGER,视情况而定。

返回

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR或SQL_INVALID_HANDLE。

诊断

SQLSetConnectAttr 相同,只不过驱动程序管理器将使用 SQL_HANDLE_DBC_INFO_TOKEN 的 HandleTypehDbcInfoToken句柄

备注

SQLSetConnectAttrForDbcInfoSQLSetConnectAttr 相同,但它在连接信息令牌(而不是连接句柄)上设置 属性。 例如,如果 SQLSetConnectAttr 无法识别属性, SQLSetConnectAttrForDbcInfo 还应返回该特性的SQL_ERROR。

每当驱动程序返回SQL_ERROR或SQL_INVALID_HANDLE时,驱动程序都应忽略此属性以计算池 ID。 此外,驱动程序管理器将从 hDbcInfoToken 获取诊断信息,并将SQL_SUCCESS_WITH_INFO返回到 SQLConnectSQLDriverConnect 中的应用程序。 因此,应用程序可以检索有关无法设置某些属性的原因的详细信息。

应用程序不应直接调用此函数。 支持驱动程序感知连接池的 ODBC 驱动程序必须实现此函数。

包括用于 ODBC 驱动程序开发的 sqlspi.h。

另请参阅

开发 ODBC 驱动程序
识别驱动程序的连接池
在 ODBC 驱动程序中开发连接池感知