SQLSetEnvAttr

SQLSetEnvAttr

函数定义:

函数的大概意思就是将,第一个参数设置为第二个参数的属性

SQLRETURN SQLSetEnvAttr(

     SQLHENV     EnvironmentHandle,

     SQLINTEGER     Attribute,

     SQLPOINTER     ValuePtr,

     SQLINTEGER     StringLength);

参数详解:

EnvironmentHandle :输入变量

需放入环境句柄(参考SQLAllocHandle

Attribute :输入变量               ValuePtr:输入变量

Attribute取值

ValuePtr取值

SQL_ATTR_CONNECTION_POOLING
(ODBC 3.0)

SQL_CP_OFF : 默认值,关闭连接池

SQL_CP_ONE_PER_DRIVER :连接池中的每一个连接都必须属于同一个驱动下的连接

SQL_CP_ONE_PER_HENV :连接池中的每一个连接都申请于同一个环境句柄

SQL_ATTR_CP_MATCH
(ODBC 3.0)

当调用 SQLConnect或者 SQLDriverConnect 时,该参数用于决定从连接池中选择连接的精度。

SQL_CP_STRICT_MATCH:默认值,连接的属性和驱动池中的连接完全一致时才会采用。

SQL_CP_RELAXED_MATCH :并非匹配所有的连接属性。

SQL_ATTR_ODBC_VERSION
(ODBC 3.0)

根据取值决定ODBC表现出的版本特性。 

· SQL_OV_ODBC3

· SQL_OV_ODBC2

SQL_ATTR_OUTPUT_NTS
(ODBC 3.0)

确定返回字符串的结束符。

默认值为 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);

posted @ 2018-03-07 18:03  jadeshu  阅读(377)  评论(0编辑  收藏  举报