ODBC学习笔记(3)--SQLSetEnvAttr

SQLRETURN SQLSetEnvAttr(  
     SQLHENV      EnvironmentHandle,  
     SQLINTEGER   Attribute,  
     SQLPOINTER   ValuePtr,  
     SQLINTEGER   StringLength);

参数1 EnvironmentHandle: 环境句柄, 

参数详解:
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);
————————————————
版权声明:本文为CSDN博主「tanshoudong0049」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tanshoudong0049/article/details/74539704

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值