API接口参考
gsc_alloc_conn
描述:用于创建连接对象,然后使用该连接对象调用gsc_connect连接到数据库。
接口:
int gsc_alloc_conn(gsc_conn_t * conn);
参数:conn,待创建的连接对象。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:是
gsc_free_conn
描述:用于释放连接对象,该接口在gsc_disconnect(断开数据库)操作后进行调用。
注意事项:
gsc_free_conn使用后要及时将变量conn赋为NULL才能再次使用。
接口:
void gsc_free_conn(gsc_conn_t conn);
参数:conn,待释放的连接对象。
返回值:空。
是否线程安全:否
gsc_connect
描述:用于连接数据库,url格式为“ip:port”且只支持TCP连接方式。
接口:
int gsc_connect(gsc_conn_t conn, const char * url, const char * user, const char * password);
参数:
- conn,待连接的对象。
- url,待连接的地址。
- user,待连接的用户名。
- password,待连接的用户密码。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_set_conn_attr
描述:用于设置连接上的属性。
当前支持的连接属性,如下表所示。
表1 连接属性表 属性名称
描述
属性值
GSC_ATTR_AUTO_COMMIT
设置连接是否自动提交。
1:自动提交。
0:手动提交。
GSC_ATTR_EXIT_COMMIT
设置zsql连接退出时是否做提交操作。
1:退出时做提交操作。
0:退出时不做提交操作。
GSC_ATTR_SERVEROUTPUT
设置zsql是否打印serveroutput信息。
1:打印serveroutput信息。
0:不打印serveroutput信息。
GSC_ATTR_CHARSET_TYPE
设置客户端字符集。
UTF8、GBK。
GSC_ATTR_NUM_WIDTH
设置zsql输出number类型数值的精度。
精度范围:[6,52]。
GSC_ATTR_INTERACTIVE_MODE
设置是否开启交互式超时能力
1:开启交互式超时能力
0:关闭交互式超时能力
GSC_ATTR_NLS_DATE_FORMAT
设置会话日期格式。字符串类型,最大长度为60(包含结束符)。
默认为’YYYY-MM-DD HH:MI:SS’。
GSC_ATTR_NLS_TIMESTAMP_FORMAT
设置会话时间戳格式, 字符串类型,最大长度为60(包含结束符)
默认为’YYYY-MM-DD HH:MI:SS.FF’
说明:FF代表小数点后精确位数。最多可以精确到小数点后6位。
例如,FF1代表小数点后精确1位。FF3代表小数点后精确3位。
GSC_ATTR_SSL_CA
设置SSL客户端根证书文件路径,用于校验服务端设备证书
CA证书文件全路径,不设置表示不校验服务端证书。
默认值:NA
GSC_ATTR_SSL_CERT
设置SSL客户端设备证书文件路径,用于服务端验证客户端身份
设备证书文件全路径。
默认值:NA
GSC_ATTR_SSL_KEY
设置SSL客户端证书私钥,用于解密和数字签名
私钥文件全路径。
默认值:NA
GSC_ATTR_SSL_MODE
设置SSL连接模式
取值范围:
0:DISABLED,不建立SSL连接。
1:PREFERRED,如果服务端支持SSL则建立SSL连接,否则建立普通连接。
2:REQUIRED,要求必须建立SSL连接,如果服务端不支持则报错。
3:VERIFY_CA,要求必须建立SSL连接,并且校验证书(需要配置CA证书)。
4:VERIFY_FULL,要求必须建立SSL连接,并且校验服务端证书,还校验证书中CN字段是否为服务端IP地址。
GSC_ATTR_SSL_CRL
设置SSL客户端吊销列表证书文件路径
吊销列表证书全路径。
默认值:NA
GSC_ATTR_SSL_KEYPWD
设置SSL客户端私钥文件加密密码,设置为空,表示私钥文件未加密(建议用户加密私钥文件)
私钥加密密码明文。
默认值:NA
GSC_ATTR_CIPHER
设置SSL客户端使用的加密算法套件
加密算法套件字符串名称。
支持的加密算法见表2。
GSC_ATTR_CONNECT_TIMEOUT
设置连接超时时间
单位:秒,默认是10,设置-1表示不超时
GSC_ATTR_SOCKET_TIMEOUT
设置连接通信时间
单位:秒,默认是-1,即不超时
GSC_ATTR_APP_KIND
设置客户端类型
默认为1,即GSC客户端。0表示未知客户端,2表示JDBC客户端,3表示Zsql客户端。
表2 加密算法 加密强度
安全程度
加密算法描述
stronger
high
DHE-RSA-AES256-GCM-SHA384
stronger
high
DHE-RSA-AES128-GCM-SHA256
stronger
high
ECDHE-ECDSA-AES256-GCM-SHA384
stronger
high
ECDHE-ECDSA-AES128-GCM-SHA256
stronger
high
ECDHE-RSA-AES256-GCM-SHA384
stronger
high
ECDHE-RSA-AES128-GCM-SHA256
stronger
high
DHE-DSS-AES256-GCM-SHA384
stronger
high
DHE-DSS-AES128-GCM-SHA256
stronger
medium
DHE-RSA-AES256-SHA256
stronger
medium
DHE-RSA-AES128-SHA256
stronger
medium
DHE-DSS-AES256-SHA256
stronger
medium
DHE-DSS-AES128-SHA256
stronger
high
DHE-RSA-AES256-CCM
stronger
high
DHE-RSA-AES128-CCM
接口:
int gsc_set_conn_attr(gsc_conn_t conn, int attr, const void * data, unsigned int len);
参数:
- conn,连接的对象。
- attr,连接的属性。
- data,连接的属性值。
- len,属性值长度(属性值为字符串时有效)。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_conn_attr
描述:用于获取连接上的属性。当前支持的连接属性,如下表所示。
表3 可获取连接属性表 属性名称
功能
GSC_ATTR_AUTO_COMMIT
获取连接是否自动提交。
GSC_ATTR_XACT_STATUS
暂未使用。
GSC_ATTR_EXIT_COMMIT
获取zsql连接退出时是否做提交操作。
GSC_ATTR_SERVEROUTPUT
获取zsql是否打印serveroutput信息。
GSC_ATTR_CHARSET_TYPE
获取客户端字符集。
GSC_ATTR_NUM_WIDTH
获取zsql输出number类型数值的精度。
GSC_ATTR_INTERACTIVE_MODE
获取是否开启交互式超时能力。
GSC_ATTR_LOB_LOCATOR_SIZE
获取服务端lob位置标识符大小。
GSC_ATTR_SSL_CA
获取SSL客户端根证书文件路径。
GSC_ATTR_SSL_CERT
获取SSL客户端设备证书文件路径。
GSC_ATTR_SSL_KEY
获取SSL客户端证书私钥。
GSC_ATTR_SSL_MODE
获取SSL连接模式。
GSC_ATTR_SSL_CRL
获取SSL客户端吊销列表证书文件路径。
GSC_ATTR_SSL_KEYPWD
获取SSL客户端私钥文件加密密码。
GSC_ATTR_SSL_CIPHER
获取SSL客户端使用的加密算法套件。
GSC_ATTR_CONNECT_TIMEOUT
获取连接到服务器超时时间。
GSC_ATTR_SOCKET_TIMEOUT
获取连接通信超时 。
GSC_ATTR_APP_KIND
获取客户端类型。
接口:
int gsc_get_conn_attr(gsc_conn_t conn, int attr, void * data, unsigned int len, unsigned int * attr_len);
参数:
- conn,连接的对象。
- attr,连接的属性。
- data,待写入属性值地址。
- len,待写入属性值地址的长度。
- attr_len:属性值长度(属性值为字符串时有效)。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_error
描述:用于获取连接上的错误码和错误信息,该接口可在任意接口执行失败后进行调用。
接口:
void gsc_get_error(gsc_conn_t conn, int * code, const char ** message);
参数:
- conn,连接的对象。
- code,获取的错误码。
- message,获取的错误信息。
返回值:空。
是否线程安全:否
gsc_get_error_position
描述:用于获取连接上执行失败SQL的错误位置,继而进一步分析SQL错误原因。
接口:
void gsc_get_error_position(gsc_conn_t conn, unsigned short * line, unsigned short * column)
参数:
- conn,连接的对象。
- line,错误行。
- column,错误列。
返回值:空。
是否线程安全:否
gsc_get_message
描述:用于获取连接上的错误信息,该接口可在任意接口执行失败后进行调用。
接口:
char* gsc_get_message(gsc_conn_t conn);
参数:conn,连接的对象。
返回值:错误信息。
是否线程安全:否
gsc_disconnect
描述:断开数据库。
接口:
void gsc_disconnect(gsc_conn_t conn);
参数:conn,连接的对象。
返回值:空
是否线程安全:否
gsc_get_sid
描述:用于获取连接ID。
接口:
unsigned int gsc_get_sid(gsc_conn_t conn);
参数:conn,连接的对象。
返回值:
sid,连接ID。
是否线程安全:否
gsc_cancel
描述:取消连接上正在运行的操作,一般用于超时场景。
接口:
int gsc_cancel(gsc_conn_t conn, int sid);
参数:
- conn,连接的对象。
- sid,连接ID。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_alloc_stmt
描述:用于创建句柄对象,使用该句柄对象去prepare和execute SQL语句。
接口:
int gsc_alloc_stmt(gsc_conn_t conn, gsc_stmt_t * stmt);
参数:
- conn,连接的对象。
- stmt,待创建的句柄对象。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_free_stmt
描述:用于释放句柄对象。
注意事项:
使用gsc_free_stmt后要及时将变量stmt赋为NULL才能再次使用。
接口:
void gsc_free_stmt(gsc_stmt_t stmt);
参数:stmt,待释放的句柄对象。
返回值:空。
是否线程安全:否
gsc_set_stmt_attr
描述:用于设置句柄上的属性。
当前支持设置的句柄属性如下表所示。
表4 句柄属性表 属性名称
描述
属性值
GSC_ATTR_PREFETCH_ROWS
设置预查询的记录数,用于execute SQL返回一次应答报文中的最大查询记录数,若设置为0,则服务端默认返回最大100条。
预查询的记录数。
GSC_ATTR_PREFETCH_BUFFER
设置预查询的缓冲区大小,用于execute SQL返回一次应答报文的最大缓冲区大小,若设置为0,则服务端默认返回65536。
预查询的缓冲区大小。
GSC_ATTR_PARAMSET_SIZE
设置批量绑定条数。
批量绑定条数。
GSC_ATTR_ALLOWED_BATCH_ERRS
设置批量绑定执行允许出错的条数,一旦出错条数超出这个参数的取值,批量执行将会停止。
允许出错的条数
GSC_ATTR_FETCH_SIZE
设置批读条数。
批读条数。
接口:
int gsc_set_stmt_attr(gsc_stmt_t stmt, int attr, const void * data, unsigned int len);
参数:
- stmt,待设置的句柄对象。
- attr,待设置的句柄属性。
- data,待设置的句柄属性值。
- len,待设置的属性值长度(属性值为字符串时有效)。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_stmt_attr
描述:用于获取句柄上的属性。
当前支持获取的句柄属性如下表所示。
表5 可获取句柄属性表 属性名称
功能
GSC_ATTR_FETCHED_ROWS
获取查询记录数(查询操作涉及)。
GSC_ATTR_PREFETCH_ROWS
获取预查询的记录数(查询操作涉及)。
GSC_ATTR_PREFETCH_BUFFER
获取预查询的缓冲区大小(查询操作涉及)。
GSC_ATTR_PARAMSET_SIZE
获取批量绑定条数。
GSC_ATTR_AFFECTED_ROWS
获取影响记录数(更新操作涉及)。
GSC_ATTR_RESULTSET_EXISTS
获取是否存在查询结果(查询操作涉及)。
GSC_ATTR_COLUMN_COUNT
获取查询列数。
GSC_ATTR_STMT_TYPE
获取句柄类型(GSC_STMT_DML/ GSC_STMT_DCL/ GSC_STMT_DDL/ GSC_STMT_PL/ GSC_STMT_EXPLAIN)。
GSC_ATTR_PARAM_COUNT
获取SQL中绑定参数个数。
GSC_ATTR_MORE_ROWS
获取是否还有更多查询记录(查询记录是分包返回)。
GSC_ATTR_STMT_EOF
获取句柄操作是否已结束。
GSC_ATTR_FETCH_SIZE
获取批读条数。
GSC_ATTR_ACTUAL_BATCH_ERRS
获取批量绑定执行后实际出错的条数。
GSC_ATTR_ALLOWED_BATCH_ERR
获取批量绑定执行允许出错的条数。
GSC_ATTR_SEROUTPUT_EXISTS
获取存储过程dbms_output.put_line是否输出。
GSC_ATTR_RETURNRESULT_EXISTS
获取存储过程dbms_sql.return_result是否输出。
GSC_ATTR_OUTPARAM_COUNT
获取存储过程的出参个数。
接口:
int gsc_get_stmt_attr(gsc_stmt_t pstmt, int attr, const void * data, unsigned int buf_len, unsigned int * len)
参数:
- stmt,待获取的句柄对象。
- attr,待获取的句柄属性。
- data,待写入属性值地址。
- buf_len,待写入属性值地址的长度。
- len,属性值长度(属性值为字符串时有效)。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_prepare
描述:用于预处理SQL,执行SQL需调用gsc_prepare、gsc_execute。
接口:
int gsc_prepare(gsc_stmt_t stmt, const char * sql);
参数:
- stmt,句柄对象。
- sql,SQL语句。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_bind_by_pos和gsc_bind_by_pos2
描述:用于按位置进行参数绑定,其中ind可以不传,一般用于批量绑定场景,标识批量绑定每列的绑定大小,绑定空值大小指定GSC_NULL。direction标识绑定参数方向,默认为GSC_INPUT,取值可为GSC_INPUT、GSC_OUTPUT、GSC_INOUT。
- 现版本type字段不支持GSC_TYPE_TIMESTAMP类型。
- 按照GSC_TYPE_DATE类型绑定,绑定数值需是7字节编码,详细编解码算法如下所示:
年月日时分秒转成7字节编码date。
date[0] = year / 100 + 100;
date[1] = year % 100 + 100;
date[2] = mon;
date[3] = day;
date[4] = hour + 1;
date[5] = min + 1;
date[6] = sec + 1;
7字节编码date转成年月日时分秒。
year = (date[0] - 100) * 100 + (date[1] - 100);
mon = date[2];
day = date[3];
hour = date[4] - 1;
min = date[5] - 1;
sec = date[6] - 1;
接口:
int gsc_bind_by_pos(gsc_stmt_t stmt, unsigned int pos, int type, const void * data, int size, unsigned short * ind); int gsc_bind_by_pos2(gsc_stmt_t stmt, unsigned int pos, int type, const void * data, int size, unsigned short * ind, int direction);
参数:
- stmt,句柄对象。
- pos,绑定位置。
- type,绑定数据类型。
- data,绑定数值。
- size,绑定大小。
- ind,绑定数值的大小。
- direction,绑定参数方向。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_bind_by_name和gsc_bind_by_name2
描述:用于按名称进行参数绑定,其中ind可以不传,一般用于批量绑定场景,标识批量绑定每列的绑定大小,绑定空值大小指定GSC_NULL。direction标识绑定参数方向,默认为GSC_INPUT,取值可为GSC_INPUT、GSC_OUTPUT、GSC_INOUT。
现版本type字段不支持GSC_TYPE_TIMESTAMP类型。
接口:
int gsc_bind_by_name(gsc_stmt_t stmt, const char * name, int type, const void * data, int size, unsigned short * ind); int gsc_bind_by_name2(gsc_stmt_t stmt, const char * name, int type, const void * data, int size, unsigned short * ind, int direction);
参数:
- stmt,句柄对象。
- name,参数名称。
- type,绑定数据类型。
- data,绑定数值。
- size,绑定大小。
- ind,绑定数值的大小。
- direction,绑定参数方向。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_column_count
描述:用于通过句柄获取查询列个数,该接口在gsc_prepare调用后进行使用。
接口:
int gsc_get_column_count(gsc_stmt_t stmt, unsigned int * column_count);
参数:
- stmt,句柄对象。
- column_count,待返回的查询列个数。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_desc_column_by_id
描述:用于按列下标获取查询列描述信息,列下标从0开始。
列描述信息如下表所示。
表6 列描述信息表 名称
说明
*name
列名
size
列定义大小
precision
列定义precision
scale
列定义scale
type
列数据类型
nullable
列定义是否允许空值(当前恒为1)
is_character
列定义是BYTE(字节)还是CHAR(字符)。0表示字节,1表示字符。
接口:
int gsc_desc_column_by_id(gsc_stmt_t stmt, unsigned int id, gsc_column_desc_t * desc);
参数:
- stmt,句柄对象。
- id,列下标。
- desc,待返回的列描述信息
返回值:
- 0:成功。
- !=0:失败
是否线程安全:否
gsc_desc_column_by_name
描述:用于按列名称获取查询列描述信息。列描述信息请见表6。
接口:
int gsc_desc_column_by_name(gsc_stmt_t pstmt, const char* col_name, gsc_column_desc_t * desc);
参数:
- pstmt,句柄对象。
- col_name,列名称。
- desc,待返回的列描述信息。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_column_by_id
描述:用于按列下标获取查询列数据,返回的列数据为编码格式,如需直接使用需要进行转码。
表7 转码方式表 数据类型
转码方式
GSC_TYPE_UINT32
uint32 value = *(uint32 *)data
GSC_TYPE_INTEGER
int32 value = *(int32 *)data
GSC_TYPE_BIGINT
int64 value = *(int64 *)data
GSC_TYPE_REAL
double value = *( double *)data
GSC_TYPE_NUMBER
内部编码数据
GSC_TYPE_DECIMAL
内部编码数据
GSC_TYPE_DATE
内部编码数据
GSC_TYPE_TIMESTAMP
内部编码数据
GSC_TYPE_CHAR
char *value = (char *)data
GSC_TYPE_VARCHAR
char *value = (char *)data
GSC_TYPE_STRING
char *value = (char *)data
GSC_TYPE_BINARY
内部编码数据
GSC_TYPE_VARBINARY
内部编码数据
GSC_TYPE_CLOB
内部编码数据
GSC_TYPE_BLOB
内部编码数据
GSC_TYPE_CURSOR
-
GSC_TYPE_COLUMN
-
GSC_TYPE_BOOLEAN
int32 value = *(int32 *)data
GSC_TYPE_TIMESTAMP_TZ
内部编码数据
GSC_TYPE_TIMESTAMP_LTZ
内部编码数据
GSC_TYPE_INTERVAL
-
GSC_TYPE_INTERVAL_YM
内部编码数据
GSC_TYPE_INTERVAL_DS
内部编码数据
接口:
int gsc_get_column_by_id(gsc_stmt_t stmt, unsigned int id, void ** data, unsigned int * size, unsigned int * is_null);
参数:
- stmt,句柄对象。
- id,列下标。
- data,待返回的列数据。
- size,待返回的列大小。
- is_null,待返回的列是否为空标识。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_column_by_name
描述:用于按列名获取查询列数据,返回的列数据为编码格式,如需直接使用需要进行转码。
转码方式见表7。
接口:
int gsc_get_column_by_name(gsc_stmt_t stmt, const char* name, void ** data, unsigned int * size, unsigned int * is_null);
参数:
- stmt,句柄对象。
- name,列名。
- data,待返回的列数据。
- size,待返回的列大小。
- is_null,待返回的列是否为空标识。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_affected_rows
描述:用于获取影响记录数,对于select、explain场景,返回当前应答报文中记录数(查询数据支持分包返回),对于insert、delete、update、merge,返回影响记录数。
接口:
unsigned int gsc_get_affected_rows(gsc_stmt_t pstmt);
参数:
- pstmt,句柄对象。
返回值:影响记录数。
是否线程安全:否
gsc_column_as_string
描述:用于按字符串方式获取列数据。
待写入列数据的内存需要先申请,内存大小参考gsc_desc_column_by_id返回的列描述大小,若内存大小不足,对于原始数据是字符串类型的做截断处理,其他数据类型会报错。
接口:
int gsc_column_as_string(gsc_stmt_t stmt, unsigned int id, char * str, unsigned int buf_size);
参数:
- stmt,句柄对象。
- id,列下标。
- str,待写入列数据的内存地址。
- buf_size,待写入列数据内存大小。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_bind_column
描述:用于绑定查询列内存,根据给定的列描述大小进行内存申请。
- 该接口调用时序为:gsc_prepare、gsc_execute、gsc_bind_column、gsc_fetch,调用gsc_fetch后查询列数据便写入绑定内存中。绑定数据类型仅支持查询列数据类型或者GSC_TYPE_STRING。
- 方式1:当绑定查询列数据类型时,返回的数据为编码格式,需要进行转码(对于基础数据类型,建议进行使用此方式,直接转码即可)。
- 方式2:当绑定GSC_TYPE_STRING时,返回的数据为字符串方式(若绑定内存大小不足,对于原始数据是字符串类型的做截断处理,其他数据类型会报错)。
更多数据类型绑定的内存大小,请参见表8。
- 支持批读能力,根据GSC_ATTR_FETCH_SIZE属性设置值来进行查询列内存申请。以查询列数据类型为GSC_TYPE_INTEGER为例,当设置批读条数为3,则gsc_bind_column接口传入的bind_ptr内存大小是sizeof(int) * 3,bind_size是sizeof(int)。
表8 绑定内存大小 数据类型
绑定内存大小(方式1)
绑定内存大小(方式2)
GSC_TYPE_UINT32
desc->size或者sizeof(uint32)
uint32 value = *(uint32 *)data
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_INTEGER
desc->size或者sizeof(int32)
int32 value = *(int32 *)data
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_BIGINT
desc->size或者sizeof(int64)
int64 value = *(int64 *)data
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_REAL
desc->size或者sizeof(double)
double value = *( double *)data
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_NUMBER
desc->size
内部编码数据
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_DECIMAL
desc->size
内部编码数据
GSC_NUMBER_BOUND_SIZE
GSC_TYPE_DATE
desc->size
内部编码数据
绑定内存为7B
结果格式为
第1个字节为世纪+100
第2个字节为年+100
第3个字节为月份
第4个字节为日
第5个字节为时+1
第6个字节为分+1
第7个字节为秒+1
(1)年月日时分秒转成7字节编码date
date[0] = year / 100 + 100;
date[1] = year % 100 + 100;
date[2] = mon;
date[3] = day;
date[4] = hour + 1;
date[5] = min + 1;
date[6] = sec + 1;
(2)7字节编码date转成年月日时分秒
year = (date[0] - 100) * 100 + (date[1] - 100);
mon = date[2];
day = date[3];
hour = date[4] - 1;
min = date[5] - 1;
sec = date[6] - 1;
GSC_TYPE_TIMESTAMP
desc->size
内部编码数据
GSC_TIME_BOUND_SIZE
结果格式为“yyyy-mm-dd hh24:mi:ss.ff3”
GSC_TYPE_CHAR
desc->size+1
char *value = (char *)data
desc->size+1
GSC_TYPE_VARCHAR
desc->size+1
char *value = (char *)data
desc->size+1
GSC_TYPE_STRING
desc->size+1
char *value = (char *)data
desc->size+1
GSC_TYPE_BINARY
desc->size
内部编码数据
desc->size*2+1
GSC_TYPE_VARBINARY
desc->size
内部编码数据
desc->size*2+1
GSC_TYPE_CLOB
desc->size
内部编码数据
根据实际需要传入待获取的clob数据大小及申请内存。
GSC_TYPE_BLOB
desc->size
内部编码数据
根据实际需要传入待获取的clob数据大小及申请内存。
GSC_TYPE_CURSOR
-
-
GSC_TYPE_COLUMN
-
-
GSC_TYPE_BOOLEAN
desc->size或者sizeof(int32)
int32 value = *(int32 *)data
GSC_BOOL_BOUND_SIZE
结果为“true”或者“false”
GSC_TYPE_TIMESTAMP_TZ
desc->size
内部编码数据
GSC_TIME_BOUND_SIZE
结果格式为“yyyy-mm-dd hh24:mi:ss.ff3”
GSC_TYPE_TIMESTAMP_LTZ
desc->size
内部编码数据
GSC_TIME_BOUND_SIZE
结果格式为“yyyy-mm-dd hh24:mi:ss.ff3”
GSC_TYPE_INTERVAL
-
-
GSC_TYPE_INTERVAL_YM
desc->size
内部编码数据
GSC_YM_INTERVAL_BOUND_SIZE
GSC_TYPE_INTERVAL_DS
desc->size
内部编码数据
GSC_DS_INTERVAL_BOUND_SIZE
接口:
int gsc_bind_column(gsc_stmt_t stmt, unsigned int id, unsigned short bind_type, unsigned short bind_size, void * bind_ptr, unsigned short * ind_ptr);
参数:
- stmt,句柄对象。
- id,列下标。
- bind_type,绑定数据类型。
- bind_size,绑定内存大小。
- bind_ptr,绑定内存地址。
- ind_ptr,待写入列大小。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_execute
描述:用于执行SQL,该接口在gsc_prepare后进行调用。
接口:
int gsc_execute(gsc_stmt_t stmt);
参数:stmt,句柄对象。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_fetch
描述:用于获取查询行数据,接口在gsc_execute/gsc_query后进行调用,返回的rows取值0或者实际查询到的记录数。
接口:
int gsc_fetch(gsc_stmt_t stmt, unsigned int * rows);
参数:
- stmt,句柄对象。
- rows,待返回的记录数。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_commit
描述:用于提交未决事务,当连接属性设置为手动提交时,执行更新操作后需要调用此接口进行事务提交。
接口:
int gsc_commit(gsc_conn_t conn);
参数:conn,连接对象。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_rollback和gsc_xa_rollback
描述:用于回滚未决事务。
当连接属性设置为手动提交时,若需取消执行更新操作结果,则需要调用此接口进行事务回滚。
接口:
int gsc_rollback(gsc_conn_t conn); int gsc_xa_rollback(gsc_conn_t conn);
参数:conn,连接对象。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_set_autocommit
描述:功能等同gsc_set_conn_attr设置GSC_ATTR_AUTO_COMMIT参数(是否自动提交)。
接口:
void gsc_set_autocommit(gsc_conn_t conn, unsigned int auto_commit);
参数:
- conn,连接对象。
- auto_commit,是否自动提交。1:自动提交,0:手动提交。
返回值:无
是否线程安全:否
gsc_set_paramset_size
描述:功能等同gsc_set_stmt_attr设置GSC_ATTR_PARAMSET_SIZE参数(批量绑定条数)。
接口:
void gsc_set_paramset_size(gsc_stmt_t pstmt, unsigned int sz);
参数:
- pstmt,句柄对象。
- sz,批量绑定条数。
返回值:无
是否线程安全:否
gsc_query
描述:用于query方式执行SQL。
该接口等价于调用gsc_prepare加gsc_execute,不支持绑定参数形式。
接口:
int gsc_query(gsc_conn_t conn, const char * sql);
参数:
- conn,连接对象。
- sql,执行的SQL。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_query_stmt
描述:用于获取query的句柄对象,使用句柄对象可以进一步调用跟句柄相关的接口。
接口:
gsc_stmt_t gsc_get_query_stmt(gsc_conn_t conn);
参数:conn,连接对象。
返回值:query的句柄对象。
是否线程安全:否
gsc_query_get_affected_rows
描述:用于获取sql执行影响的行数。
接口:
unsigned int gsc_query_get_affected_rows(gsc_conn_t conn);
参数:conn,连接对象。
返回值:行数。
是否线程安全:否
gsc_query_get_column_count
描述:用于获取sql查询返回的列数。
接口:
unsigned int gsc_query_get_column_count(gsc_conn_t conn);
参数:conn,连接对象。
返回值:列数。
是否线程安全:否
gsc_query_fetch
描述:用于获取查询结果。
接口:
int gsc_query_fetch(gsc_conn_t conn, unsigned int * rows);
参数:
- conn,连接对象。
- rows,获取到的记录数。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_query_describe_column
描述:用于获取列的描述信息。
接口:
int gsc_query_describe_column(gsc_conn_t conn, unsigned int id, gsc_column_desc_t * desc);
参数:
- conn,连接对象。
- id,第几列(从0开始)。
- desc,待返回的列描述信息。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_query_get_column
描述:用于获取列值。
接口:
int gsc_query_get_column(gsc_conn_t conn, unsigned int id, void ** data, unsigned int * size, unsigned int * is_null);
参数:
- conn,连接对象。
- id,第几列(从0开始)。
- data,待返回的列值。
- size,待返回的列值的长度。
- is_null,待返回的列值是否为空。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_write_blob
描述:用于写blob字段数据。
接口:
int gsc_write_blob(gsc_stmt_t pstmt, unsigned int pos, const void * data, unsigned int size);
参数:
- pstmt,句柄对象。
- pos,第几列(从0开始)。
- data,待写入的数据。
- size,待写入的数据长度。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_write_clob
描述:用于写clob字段数据。
接口:
int gsc_write_clob(gsc_stmt_t pstmt, unsigned int pos, const void * data, unsigned int size, unsigned int *nchars);
参数:
- pstmt,句柄对象。
- pos,第几列(从0开始)。
- data,待写入的数据。
- size,待写入的数据长度。
- nchars,写入的字符数量。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_write_batch_blob
描述:用于写批量blob字段数据。
接口:
int gsc_write_batch_blob(gsc_stmt_t pstmt, unsigned int id, unsigned int piece, const void * data, unsigned int size);
参数:
- stmt,句柄对象。
- id,第几列(从0开始)。
- piece,第几批(从0开始)。
- data,待写入的数据。
- size,待写入的数据长度。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_write_batch_clob
描述:用于写批量clob字段数据。
接口:
int gsc_write_batch_clob(gsc_stmt_t stmt, unsigned int id, unsigned int piece, const void * data, unsigned int size, unsigned int *nchars);
参数:
- stmt,句柄对象。
- id,第几列(从0开始)。
- piece,第几批(从0开始)。
- data,待写入的数据。
- size,待写入的数据长度。
- nchars,写入的字符数量。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_read_blob_by_id
描述:用于读取blob字段数据。
接口:
int gsc_read_blob_by_id(gsc_stmt_t pstmt, unsigned int id, unsigned int byte_offset, void * buffer, unsigned int size, unsigned int * nbytes, unsigned int *eof);
参数:
- pstmt,句柄对象。
- id,第几列(从0开始)。
- byte_offset,读取数据起始字节。
- buffer,读取到的字段数据。
- size,读取到的字段数据的长度。
- nbytes,读取到的字段字节长度。
- eof,字段数据是否读取结束。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_read_blob
描述:用于读取blob字段数据。
接口:
int gsc_read_blob(gsc_stmt_t pstmt, void * locator, unsigned int byte_offset, void * buffer, unsigned int size, unsigned int * nbytes, unsigned int *eof);
参数:
- pstmt,句柄对象。
- locator,列指针。
- byte_offset,读取数据起始字节。
- buffer,读取到的字段数据。
- size,读取到的字段数据的长度。
- nbytes,读取到的字段字节长度。
- eof,字段数据是否读取结束。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_read_clob_by_id
描述:用于读取clob字段数据。
接口:
int gsc_read_clob_by_id(gsc_stmt_t pstmt, unsigned int id, unsigned int byte_offset, void * buffer, unsigned int size, unsigned int *nchars, unsigned int * nbytes, unsigned int *eof);
参数:
- pstmt,句柄对象。
- id,第几列(从0开始)。
- byte_offset,读取数据起始字节。
- buffer,读取到的字段数据。
- size,读取到的字段数据的长度。
- nchars,读取到的字段字符长度。
- nbytes,读取到的字段字节长度。
- eof,字段数据是否读取结束。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_read_clob
描述:用于读取clob字段数据。
接口:
int gsc_read_clob(gsc_stmt_t pstmt, void * locator, unsigned int byte_offset, void * buffer, unsigned int size, unsigned int *nchars, unsigned int * nbytes, unsigned int *eof);
参数:
- pstmt,句柄对象。
- locator,列指针。
- byte_offset,读取数据起始字节。
- buffer,读取到的字段数据。
- size,读取到的字段数据的长度。
- nchars,读取到的字段字符长度。
- nbytes,读取到的字段字节长度。
- eof,字段数据是否读取结束。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_fetch_serveroutput
描述:用于获取serveroutput信息。
需先通过gsc_set_conn_attr设置GSC_ATTR_SERVEROUTPUT属性值为1开启serveroutput能力。
接口:
int gsc_fetch_serveroutput(gsc_stmt_t stmt, char ** data, unsigned int * len);
参数:
- stmt,句柄对象。
- data,serveroutput数据。
- len,serveroutput数据大小。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_implicit_resultset
描述:用于获取多结果集(dbms_sql.return_result)。
当返回的resultset为NULL时则表示无更多结果集。使用resultset调用gsc_fetch等接口可以进一步获取游标数据
接口:
int gsc_get_implicit_resultset(gsc_stmt_t stmt, gsc_stmt_t * resultset);
参数:
- stmt,句柄对象。
- resultset,单个结果集游标。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_fetch_outparam
描述:用于获取出参数据,当前仅支持存储过程出参。
接口:
int gsc_fetch_outparam(gsc_stmt_t stmt, unsigned int * rows);
参数:
- stmt,句柄对象。
- rows,待返回的出参数据记录数。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_outparam_by_id
描述:用于获取出参列数据。
根据出参下标获取出参列数据,出参列数据信息如下表所示。
表9 出参列数据信息 描述名称
说明
*data
出参数据。
size
出参数据大小。
* is_null
出参是否为空。
接口:
int gsc_get_outparam_by_id(gsc_stmt_t stmt, unsigned int id, void ** data, unsigned int * size, unsigned int * is_null)
参数:
- stmt,句柄对象。
- id,出参下标。
- data,获取出参的指针。
- size,获取出参长度。
- is_null,出参是否为空。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_desc_outparam_by_id
描述:根据出参下标获取对应出参列描述。
接口:
int gsc_desc_outparam_by_id(gsc_stmt_t stmt, unsigned int id, gsc_outparam_desc_t * desc);
参数:
- stmt,句柄对象。
- id,出参下标。
- desc,出参列描述 。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_desc_outparam_by_name
描述:根据出参名字获取对应出参列描述。
接口:
int gsc_desc_outparam_by_name(gsc_stmt_t stmt, const char* name, gsc_outparam_desc_t * desc);
参数:
- stmt,句柄对象。
- name,出参名字。
- desc,出参列描述。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_outparam_by_name
描述:根据出参列名获取特定出参列数据信息
接口:
int gsc_get_outparam_by_name(gsc_stmt_t stmt, const char* name, void ** data, unsigned int * size, unsigned int * is_null);
参数:
- stmt,句柄对象。
- name,出参列名。
- * data,出参列数据信息。
- size,出参列数据大小。
- is_null,出参列数据是否为NULL。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_outparam_as_string_by_id
描述:根据出参列下标获取出参列数据信息
接口:
int gsc_outparam_as_string_by_id(gsc_stmt_t stmt, unsigned int id, char * str, unsigned int buf_size);
参数:
- stmt,句柄对象。
- id,出参列下标。
- str,存储出参列数据的首地址。
- buf_size,出参列数据大小。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_outparam_as_string_by_name
描述:根据出参列名获取出参列数据信息
接口:
int gsc_outparam_as_string_by_name(gsc_stmt_t stmt, const char* name, char * str, unsigned int buf_size);
参数:
- stmt,句柄对象。
- name,出参列名。
- str,存储出参列数据的首地址。
- buf_size,出参列数据大小。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_query_multiple
描述:执行多条sql语句。
接口:
int gsc_query_multiple(gsc_conn_t conn, const char * sql);
参数:
- conn,连接句柄对象。
- sql,需要执行的多条sql。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_query_resultset
描述:获取多sql执行的结果集。
接口:
int gsc_get_query_resultset(gsc_conn_t pconn, gsc_stmt_t * resultset);
参数:
- pconn,连接句柄对象。
- resultset,结果集。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_describle
描述:用于获取指定对象的描述信息。其中,对象的列描述信息通过调用gsc_desc_column_by_id接口获取。
接口:
int gsc_describle(gsc_stmt_t stmt, char * objptr, gsc_desc_type_t dtype);
参数:
- stmt,句柄对象。
- objptr,待获取描述信息的对象。
- dtype,对象类型。目前支持的对象类型有:
- 0、1,表
- 2,视图
- 3,同义词
- 4,查询语句
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_get_batch_error
描述:获取批量绑定执行的错误信息。批量获取的错误数量可以通过调用gsc_set_stmt_attr接口修改句柄的GSC_ATTR_ALLOWED_BATCH_ERRS属性来设置。
接口:
int gsc_get_batch_error(gsc_stmt_t stmt, unsigned int * line, char ** err_message, unsigned int * rows);
参数:
- stmt,句柄对象。
- line,批量执行的错误位置。
- err_message,批量执行的错误信息。
- rows:当前出错sql的数量。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_xa_start
描述:开启事务。
接口:
int32 gsc_xa_start(gsc_conn_t conn, gsc_xid_t *xid, uint64 timeout, uint64 flags);
参数:
- conn,连接对象。
- xid,事务标示符。
- timeout,事务超时时间,单位为秒。
- flags,事务状态标示,目前支持的标志有:
- GSC_XA_NEW,开启一个新的事务
- GSC_XA_RESUME,恢复一个已经存在的事务
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_xa_end
描述:挂起事务。
接口:
int32 gsc_xa_end(gsc_conn_t conn, uint64 flags);
参数:
- conn,连接对象。
- flags,事务状态标示,只支持GSC_XA_DEFAULT。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_xa_prepare
描述:事务第一阶段提交。
接口:
int32 gsc_xa_prepare(gsc_conn_t conn, gsc_xid_t *xid, uint64 flags, struct timeval *timestamp);
参数:
- conn,连接对象。
- xid,事务标示符。
- flags,事务状态标示,只支持GSC_XA_DEFAULT。
- timestamp,事务管理器的当前时间。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_xa_commit
描述:事务第二阶段提交。
接口:
int32 gsc_xa_commit(gsc_conn_t conn, gsc_xid_t *xid, uint64 flags, struct timeval *timestamp);
参数:
- conn,连接对象。
- xid,事务标示符。
- flags,事务状态标示,目前支持的标志有:
- GSC_XA_ONEPHASE,一阶段提交
- GSC_XA_LGWR_NOWAIT,不等待当前事务的redo日志刷到在线redo日志文件中直接返回
- GSC_XA_DEFAULT,两阶段提交
- timestamp,事务管理器的当前时间。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
gsc_xa_rollback
描述:回滚事务。
接口:
int32 gsc_xa_rollback(gsc_conn_t conn, gsc_xid_t *xid, uint64 flags);
参数:
- conn,连接对象。
- xid,事务标示符。
- flags,事务状态标示,只支持GSC_XA_DEFAULT。
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
不能在一个普通事务中调用gsc_xa_commit或者gsc_xa_rollback。
gsc_xa_status
描述:获取事务状态。
接口:
int32 gsc_xact_status(gsc_conn_t conn, gsc_xid_t *xid, gsc_xact_status_t *status);
参数:
- conn,连接对象。
- xid,事务标示符。
- status,某个事务的当前状态,有:
- GSC_XACT_END,事务结束
- GSC_XACT_OPEN,事务开启
- GSC_XACT_PHASE1,一阶段事务
返回值:
- 0:成功。
- !=0:失败。
是否线程安全:否
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论