句柄属性
XGCI中的各类句柄均有不同的属性值,可通过属性获取函数 XGCIHandleAttrGet()来获取句柄属性值,也可通过 XGCIHandleAttrSet()函数来设置句柄的属性值。下面的代码展示了通过会话句柄的XGCI_ATTR_SESS_TIMEZONE属性来设置会话句柄中的时区信息:
/* 时区设定 */
XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_TIMEZONE,”GMT+08:00”,XuguCI_NTS)
对于某些特定的句柄属性要求在申请句柄之初进行初始设置,例如,会话句柄在申请后,必须随附用户会话句柄的用户名及用户口令信息等,用于方便后续进行新建会话连接。XGCI各类句柄的相关属性如表1所示。
句柄类型 | 句柄属性 | 句柄作用 |
---|---|---|
环境句柄 | XGCI_ATTR_ENV_VERSION | XGCI版本信息,决定某些函数的实现方式 |
环境句柄 | XGCI_ATTR_ENV_USE_POOL | 决定是否使用连接池 |
服务器句柄 | XGCI_ATTR_SRV_IP | 指定应用端要连接的数据库服务器的IP地址,绑定数据库句柄的要素之一 |
服务器句柄 | XGCI_ATTR_SRV_PORT | 指定服务器端侦听应用请求的端口,应用端只有将信息发往这个端口,服务器才能侦听到应用的请求,绑定数据库句柄的要素之一 |
服务器句柄 | XGCI_ATTR_SRV_DBNAME | 服务器的数据库名指定,绑定数据库句柄的要素之一 |
服务器句柄 | XGCI_ATTR_SRV_TURN_IPS | 连接将采用多IP轮转服务建立,多个IP可以提高连接的可用性,当某个节点死亡或者断网时,可以通过其他节点建立连接提供数据库服务。多IP间用逗号分隔 |
会话句柄 | XGCI_ATTR_SESS_CHARSET | 设置客户端字符集 |
会话句柄 | XGCI_ATTR_SESS_SSL | 网络加密传输,在不安全的网络环境下,或用户有此需求时,从数据库服务器端到应用请求的网络通讯之间彼此交互的数据是否使用网络加密,见示例XXX |
会话句柄 | XGCI_ATTR_SESS_AUTO_COMMIT | 命令自动提交属性,当命令自动提交设置为true时,每发送一条命令,服务器会为其启动一个新的事务,并且在命令完成后自动的提交此命令完成的事务。当命令自动提交设置为False时,每发送一个命令,服务器不会自动将其提交,而是需要用户自己显式的发出提交请求才会提交此会话的所有命令,或者等候用户发送一个带有隐式提交命令的请求时才会提交之前的命令(比如create table 等DDL语句) |
会话句柄 | XGCI_ATTR_SESS_TIMEOUT | 连接超时设置属性,此设置达成从客户端设定长时间不使用的连接的自动消亡,以减轻资源浪费的目的。有利于减轻服务器的压力,提高效率 |
会话句柄 | XGCI_ATTR_SESS_ISOLEVEL | 事务隔离级别属性,在多任务并发执行时,事务的隔离级别不同会导致不同的执行效率和不同的执行结果 |
会话句柄 | XGCI_ATTR_SESS_TIMEZONE | 连接时区信息属性 |
会话句柄 | XGCI_ATTR_SESS_ENCRYPTOR | 存储磁盘加密属性 |
会话句柄 | XGCI_ATTR_SESS_USER | 会话用户名属性,提供会话的连接用户名认证,使得服务端确定用户的权限 |
会话句柄 | XGCI_ATTR_SESS_PASS | 会话用户口令属性,提供会话的连接用户名认证口令,确保用户是合法的 |
会话句柄 | XGCI_ATTR_SESS_LOB_DESCRIBER | 大对象描述符返回属性,当服务器返回的结果集中存在大对象时,决定是否只返回描述符,而不返回大对象数据 |
会话句柄 | XGCI_ATTR_SESS_VERSION | 客户端与服务端建立连接时采用的通讯协议版本信息,因服务端V12之后部分协议内容有变化,通过本属性设置或显示版本信息 |
语句句柄 | XGCI_ATTR_COL_COUNT | 取得返回结果集的列数 |
语句句柄 | XGCI_ATTR_ROW_COUNT | 取得返回结果集的行数 |
语句句柄 | XGCI_ATTR_EFFECT_NUM | 执行UPDATE或DELETE语句时,所涉及变更的数据行数 |
语句句柄 | XGCI_ATTR_STMT_PREPARE_WITH_SERVER_CURSOR | 设置XGCI_ATTR_STMT_PREPARE_WITH_SERVER_CURSOR属性有2重开关,调用prepare执行select查询时,默认情况下不开启服务器端游标执行。当结果集过大时,可以采用服务器游标分段取数,此时设置为USE_SERVER_CURSOR 1,结果集过大,且需要并发异步接收,那么设置为USE_SERVER_CURSOR_ASYNC 2 |
参数描述句柄 | XGCI_ATTR_NAME | 取得当前描述句柄指向的列名 |
参数描述句柄 | XGCI_ATTR_DATA_TYPE | 取得当前描述句柄指向的数据C类型 |
参数描述句柄 | XGCI_ATTR_ALIAS | 取得当前描述句柄指向的列的别名(如果有别名的话) |
参数描述句柄 | XGCI_ATTR_DATA_SIZE | 取得当前描述句柄指向的列的值长度 |
参数描述句柄 | XGCI_ATTR_CHAR_SIZE | 取得当前描述句柄指向的列的值的char类型bufer的长度。非char类型表示为所占字节数 |
参数描述句柄 | XGCI_ATTR_TYPE_NAME | 取得当前描述句柄指向的列的数据类型名,有长度的会带上长度,有精度标度的会带上精度标度 |
参数描述句柄 | XGCI_ATTR_CHAR_USED | 取得当前描述句柄指向的列在用户端是否采用了C的char类型来存放其数据 |
参数描述句柄 | XGCI_ATTR_DATA_IS_CHAR | 取得当前描述句柄指向的列在数据库端的数据类型是否为CHAR |
参数描述句柄 | XGCI_ATTR_PRECISION | 取得当前描述句柄指向的列的数据精度,单对numeric数据类型有用 |
参数描述句柄 | XGCI_ATTR_SCALE | 取得当前描述句柄指向的列的数据标度,单对numeric数据类型有用 |
参数描述句柄 | XGCI_ATTR_DATA_IS_NOTNULL | 取得当前描述句柄指向的列的数据是否有非空的约束,有返回1,没有返回0 |