SQLGetEnvAttr
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);
SQLGetEnvAttr的更多相关文章
- ODBC API简介
1. 数据类型: 通过SQLGetTypeInfo函数来获取ODBC 3.0支持的数据类型信息.由SQLGetTypeInfo返回的数据类型是数据源所支持的数据类型. SQLRETURN S ...
- [转]ODBC编程指南
DM4 ODBC编程指南本章结合DM4数据库的特点,比较全面系统的介绍ODBC的基本概念以及DM4 ODBC DRIVER的使用方法,以便用户更好地使用DM4 ODBC编写应用程序.ODBC提供给你访 ...
- Atitit.跨语言数据库db api兼容性 jdbc odbc ado oledb 增强方案
Atitit.跨语言数据库db api兼容性 jdbc odbc ado oledb 增强方案 1. 跨语言db api兼容性..1 2. 目前访问数据库的接口很多.比较常用的jdbc odbc 以 ...
随机推荐
- [daily] pandoc
学了LaTeX之后,你就会很自然的接触的另一种观点: LaTeX是专注于排版的,你需要专注于内容. 于是,请使用pandoc. 简单的说, pandoc就是可以将各种个样格式的文档转换成各种各样格式的 ...
- [troubleshoot][daily][redhat] 设备反复重启故障排查
一台服务器设备,反复重启,每天重启数次. 一: 原因分析及初步排异. 1. 硬件,内存主板,一一更换,甚至除了硬盘将整台机器都换掉了,依然重启. 2. 排除电源问题,换了电源线,换了插座,还是重启 ...
- 2018/05/11 PHP 设计模式之 适配器模式
什么是适配器模式? 简单来说,我想买一根充电线,我买一根安卓的?还是买一根苹果的? 我也不确定,因为我以可能会换手机,对于我的形式我也不确定. 所以,我要买一根可以同时适配 安卓/苹果 的线. 所谓适 ...
- 在Linux下用C语言实现短信收发
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lyserver/archive/2008/10/01/3007090.aspx 首先,我根据功能需要创建了几个头文件 ...
- mvc,EntityFramework调用分页存储过程
此文讲述mvc4+entityframework6+sqlserver2008环境下调用存储过程,实现分页. 1.分页存储过程代码如下: 分页原理用的row_number()和over()函数实现(没 ...
- LeetCode-111.Mininum Depth of Binary Tree
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...
- 创建目录:mkdir
[root@localhost ~]# # 创建相对目录 [root@localhost ~]# # 创建绝对目录 [root@localhost ~]# // # -p 用于递归地创建目录
- redis缓存和mysql数据库同步
附redis关于缓存雪崩和缓存穿透,热点key 穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层.从而失去缓存的意义. 解决办法: 持久层查询不到就缓存空结果,查询时先判断缓存 ...
- jenkins+maven+gitlab触发构建
1.安装插件 安装gitlab插件 回到项目配置在“构建触发器”那里有一个Build when a change is pushed to GitLab. GitLab webhook选项复制选项里的 ...
- 反射入门-浅谈反射用途_根据Ado游标对象创建list集合
本人大二菜鸟一只,今天在上课期间有个同学看着C#反射的内容说反射没什么用,一时之间也想不到什么更好的例子,就写了个根据泛型类型和游标反射创建List集合的Demo. 首先创建一个用于封装对应数据的en ...