SQLSetEnvAttr
函数定义:
SQLRETURN SQLSetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
参数详解:
EnvironmentHandle :输入变量
需放入环境句柄(参考SQLAllocHandle)
Attribute :输入变量 ValuePtr:输入变量
Attribute取值 |
ValuePtr取值 |
SQL_ATTR_CONNECTION_POOLING |
SQL_CP_OFF : 默认值,关闭连接池 SQL_CP_ONE_PER_DRIVER :连接池中的每一个连接都必须属于同一个驱动下的连接 SQL_CP_ONE_PER_HENV :连接池中的每一个连接都申请于同一个环境句柄 |
SQL_ATTR_CP_MATCH |
当调用 SQLConnect或者 SQLDriverConnect 时,该参数用于决定从连接池中选择连接的精度。 SQL_CP_STRICT_MATCH:默认值,连接的属性和驱动池中的连接完全一致时才会采用。 SQL_CP_RELAXED_MATCH :并非匹配所有的连接属性。 |
SQL_ATTR_ODBC_VERSION |
根据取值决定ODBC表现出的版本特性。 · SQL_OV_ODBC3 · SQL_OV_ODBC2 |
SQL_ATTR_OUTPUT_NTS |
确定返回字符串的结束符。 默认值为 SQL_TRUE返回’/0’结束的字符串。 SQL_FALSE相反。 |
StringLength :输入变量
如果ValuePtr为一个整型指针,则可以被忽略。如果为二进制或字符串,那么就需要再次放入其长度。
返回值:
返回值有四种:SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE, or SQL_ERROR.
查看详细错误信息可调用SQLGetDiagRec 函数(之后章节讲解)。
用法:
必须先设置ODBC版本,才可以设置其他属性。
1. 设置版本ODBC 3.X
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
2. 设置SQL_CP_ONE_PER_DRIVER
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)SQL_CP_ONE_PER_DRIVER ,SQL_IS_INTEGER);
3. 关闭线程池
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)SQL_CP_OFF,SQL_IS_INTEGER);
4. 设置SQL_CP_ONE_PER_HENV
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)SQL_CP_ONE_PER_HENV ,SQL_IS_INTEGER);
5. 设置严格匹配
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_CP_MATCH,(SQLPOINTER)SQL_CP_STRICT_MATCH,SQL_IS_INTEGER);
6. 设置非严格匹配
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_CP_MATCH,(SQLPOINTER)SQL_CP_RELAXED_MATCH ,SQL_IS_INTEGER);
7. 设置返回’/0’结束字符串
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_OUTPUT_NTS,(SQLPOINTER)SQL_TRUE,SQL_IS_INTEGER);
8. 设置非’/0’字符串
rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
rs= SQLSetEnvAttr(henv,SQL_ATTR_OUTPUT_NTS,(SQLPOINTER)SQL_FALSE,SQL_IS_INTEGER);