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的更多相关文章

  1. ODBC API简介

    1.      数据类型: 通过SQLGetTypeInfo函数来获取ODBC 3.0支持的数据类型信息.由SQLGetTypeInfo返回的数据类型是数据源所支持的数据类型. SQLRETURN S ...

  2. [转]ODBC编程指南

    DM4 ODBC编程指南本章结合DM4数据库的特点,比较全面系统的介绍ODBC的基本概念以及DM4 ODBC DRIVER的使用方法,以便用户更好地使用DM4 ODBC编写应用程序.ODBC提供给你访 ...

  3. Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案

    Atitit.跨语言数据库db  api兼容性 jdbc odbc ado oledb 增强方案 1. 跨语言db api兼容性..1 2. 目前访问数据库的接口很多.比较常用的jdbc odbc 以 ...

随机推荐

  1. iOS之WKWebView加载的网页自适应大小

    一,前言 有时候在WKWebView加载页面后会发现页面的字会很小, 这是因为原网页没有做手机屏幕尺寸的适配, 那么在后台不做调整的情况下我们移动端怎样来适配页面呢? 以下代码可以适配大小(原本不可以 ...

  2. [daily][dpdk] 内核模块(网卡驱动)无法卸载

    由于程序的异常退出, 内核的引用计数没有被清除(我猜的). 所以驱动不能被卸载掉, 强制也不行. 如下: [root@localhost ~]# insmod /opt/scorpion/KingKo ...

  3. mysql学习【第4篇】:MySQL函数和编程

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...

  4. LeetCode 575 Distribute Candies 解题报告

    题目要求 Given an integer array with even length, where different numbers in this array represent differ ...

  5. Java ServiceLoader(SPI)学习

    1. 几个不错的关于ServiceLoader的文章,大家可以先参考一下 1) http://www.myexception.cn/program/1355384.html 这篇的后面的问题分析不错 ...

  6. POJ2431 Expedition 贪心

    正解:模拟费用流 解题报告: 先放个传送门鸭,题目大意可以点Descriptions的第二个切换成中文翻译 然后为了方便表述,这里强行改一下题意(问题是一样的只是表述不一样辣,,, 就是说现在在高速公 ...

  7. word2vec训练好的词向量

    虽然早就对NLP有一丢丢接触,但是最近真正对中文文本进行处理才深深感觉到自然语言处理的难度,主要是机器与人还是有很大差异的,毕竟人和人之间都是有差异的,要不然不会讲最难研究的人嘞 ~~~~~~~~~~ ...

  8. XtraBackup之踩过的坑

    xtrabackup相信目前使用已经非常广泛了,备份innodb表的首选工具,但是其中还是有点小坑,虽然发生的概率不大,但是我还是踩坑了.关于xtrabackup的详细参考请查阅官方文档http:// ...

  9. (4.1)mysql备份还原——mysql常见故障

    (4.1)mysql备份还原——mysql常见故障 1.常见故障类型 在数据库环境中,常见故障类型: 语句失败,用户进程失败,用户错误 实例失败,介质故障,网络故障 其中最严重的故障主要是用户错误和介 ...

  10. 如何卸载docker

    1.卸载 (1)yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ d ...