SQL GetEnvAttr函数定义及用法讲解
sqlgetenvattr
函数定义:
用于得到当前环境的各项设置属性
sqlreturnsqlgetenvattr(
sqlhenvenvironmenthandle,
sqlintegerattribute,
sqlpointervalueptr,
sqlintegerbufferlength,
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);