SQLGetEnvAttr

函数定义:

用于得到当前环境的各项设置属性

SQLRETURN SQLGetEnvAttr(

SQLHENV     EnvironmentHandle,

SQLINTEGER     Attribute,

SQLPOINTER     ValuePtr,

SQLINTEGER     BufferLength,

SQLINTEGER *     StringLengthPtr);

参数详解:

EnvironmentHandle

:输入参数

需要查看的环境句柄

Attribute

:输入参数

需要查询的属性

ValuePtr

:输出参数

一个缓存区指针,用于存放之后查询到的属性信息

BufferLength

:输入参数

上述指针的长度

StringLengthPtr

:输出参数

返回储存在ValuePtr中的接收到的属性字符串的长度,我们只知道定义时valuePtr的长度,如果全部遍历会浪费资源。

返回值:

返回值有四种:SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE, or SQL_ERROR.

查看详细错误信息可调用SQLGetDiagRec 函数(之后章节讲解)。

用法:

1. 取得ODBC版本信息

rs= SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)ptr,50,&rp);

2. 取得连接池支持级别(前置不支持)

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);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)ptr,50,&rp);

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_ONE_PER_HENV ,SQL_IS_INTEGER);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)ptr,50,&rp);

4. 取得连接池支持级别(前置驱动支持)

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);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER)ptr,50,&rp);

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);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_CP_MATCH,(SQLPOINTER)ptr,50,&rp);

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);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_CP_MATCH,(SQLPOINTER)ptr,50,&rp);

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);

rs_c = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);

rs_c = SQLConnect(hdbc,(UCHAR*)szDSN,SQL_NTS,(UCHAR*)szUID ,SQL_NTS,(UCHAR*)szAuthStr,SQL_NTS);

rs=SQLGetEnvAttr(henv,SQL_ATTR_OUTPUT_NTS,(SQLPOINTER)ptr,50,&rp);

05-11 19:48