SQLSetConnectAttr - 设置与连接相关的选项

用途

规范: DB2 CLI ODBC 1.0 ISO CLI

SQLSetConnectAttr() 设置与连接相关的选项。

语法

SQLRETURN   SQLSetConnectAttr   (SQLHDBC        ConnectionHandle,   
                              SQLINTEGER        Attribute,
                              SQLPOINTER        ValuePtr,
                              SQLINTEGER        StringLength);

函数自变量

表 80. SQLSetConnectAttr 自变量

数据类型 自变量 使用 描述
SQLHDBC ConnectionHandle 输入 连接句柄。
SQLINTEGER Attribute 输入 要设置的选项。
SQLPOINTER ValuePtr 输入 如果 Attribute 是一个 ODBC 定义的属性,且 ValuePtr 指向字符串或二进制缓冲区,则此自变量应是 ValuePtr 的长度。如果 Attribute 是一个 ODBC 定义的属性,且 ValuePtr 是整数,则忽略 StringLength

如果 Attribute 是一个 DB2 CLI 属性,则应用程序通过设置 StringLength 自变量来指示该属性的性质。StringLength 可以具有下列值:

  • 如果 ValuePtr 是指向字符串的指针,则 StringLength 是字符串或 SQL_NTS 的长度。
  • 如果 ValuePtr 是指向二进制缓冲区的指针,则应用程序将 SQL_LEN_BINARY_ATTR(length) 宏的结果放在 StringLength 中。这将在 StringLength 中放置一个负数值。
  • 如果 ValuePtr 是指向除字符串或二进制字符串外的值的指针,则 StringLength 的值应为 SQL_IS_POINTER。
  • 如果 ValuePtr 包含定长值,则 StringLength 是 SQL_IS_INTEGER 或 SQL_IS_UINTEGER(在适当的时候)。
SQLINTEGER StringLength 输入 如果 ValuePtr 指向字符串或二进制缓冲区,则此自变量应是 ValuePtr 的长度。如果 ValuePtr 是一个指针,但并非指向字符串或二进制缓冲区,则 StringLength 的值应当是 SQL_IS_POINTER。如果 ValuePtr 不是指针,则 StringLength 的值应当是 SQL_IS_NOT_POINTER。

用法

连接的连接属性会一直有效,直到它们被对 SQLSetConnectAttr() 的另一调用更改,或是通过调用 SQLDisconnect() 断开了该连接。

SQLSetConnectAttr() 接受两种不同格式的属性信息:以 null 结束的字符串或 32 位整数值。每一种的格式都在该属性的描述中有记载。SQLSetConnectAttr()ValuePtr 自变量所指向的字符串的长度为 StringLength

连接属性

当前定义的属性显示如下。

SQL_ATTR_AUTOCOMMIT (DB2 CLI/ODBC)
一个 32 位整数值,它指定方式类型。支持的值是:

SQL_ATTR_CONNECTION_DEAD (DB2 CLI/ODBC)
READ ONLY 32 位整数值,用来指示连接是否仍然是活动的。DB2 CLI 将返回下列其中一个值:

SQL_ATTR_LOGIN_TIMEOUT (DB2 CLI/ODBC)
一个 32 位整数值,对应于在将控制返回给应用程序之前等待登录请求完成的秒数。

SQL_ATTR_FILENAME_FORMAT (DB2 Everyplace)
一个 32 位整数指定 DB2e 数据库引擎是以长格式还是以 8.3 格式创建文件名。当调用 SQLSetConnectAttr 时,仅当连接的路径中没有目录文件,才允许应用程序更改文件名格式。 如果由于预先存在的目录文件而拒绝更改文件名格式,将返回具有 SQLState HY000 的 SQL_ERROR。 例如,如果应用程序连接至已存在 DB2 Everyplace 目录文件的路径,任何更改文件格式的尝试都将失败。 如果应用程序连接至不存在 DB2 Everyplace 目录文件的路径且在试图在第一个 CREATE TABLE 语句之后更改文件名格式,SQLSetConnectAttr 也将返回 SQL_ERROR。这是因为在首个 CREATE TABLE 语句期间会创建目录文件, 在创建目录文件之后不允许更改文件名格式。 缺省文件名格式取决于平台。SQL_FILENAME_FORMAT_LONG 当前是受支持的所有平台的缺省值。

属性值:

 SQL_FILENAME_FORMAT_LONG - 将以长文件名格式创建文件。
 SQL_FILENAME_FORMAT_83 - 将以 8.3 文件名格式创建文件。

返回码

诊断

表 81. SQLSetConnectAttr SQLSTATE

SQLSTATE 描述 解释
HY000 一般错误。 不能更改文件名格式。
HY001 内存分配失败。 DB2 CLI 无法分配支持函数的执行或完成所需的内存。
HY014 不再有句柄。 因为内部资源问题,DB2 CLI 无法分配句柄。
HY090 字符串或缓冲区长度无效。 其中一个名称长度自变量的值小于 0,但不等于 SQL_NTS。

限制

相关参考