暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T API接口参考

墨天轮 2019-10-12
2616

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论