GBase8s ESQL/C支持5种字符串数据类型, 如果在数据库的列中使用字符串类型,例如CHAR或者VARCHAR, 以下ESQL/C字符串类型可以使用:
1. C语言的char类型
2. GBase8s ESQL/C预定义类型, fixchar, string, varchar
3. lvarchar数据类型
具体使用那种数据类型,参考以下条件:
1. 是否希望ESQL/C使用空字符来作为字符串的结束符。
2. 是否希望使用空白字符填充。
ESQL/C 字符串类型
ESQL/C 字符串类型 | Null结尾 | 包含空白字符 |
char | Y | Y |
fixchar | Y | |
string | Y | 只有在列中包含空白字符时,才会包含空白字符, 不会自动添加空白字符。 |
varchar | Y | Y |
lvarchar | Y |
varchar数据类型
varchar数据类型是GBase8s ESQL/C定义的数据类型,用来保存变长字符串。
当应用程序从数据库的CHAR列获取数据到varchar类型的变量中时,GBase8s ESQL/C删除末尾的空白字符并添加null终止字符。行为与应用程序读取VARCHAR列到varchar类型的变量一致。
声明varchar类型变量的长度为n+1, n就是数据库列的长度,包含了null终止字符。
使用下面的格式声明varchar类型。
EXEC SQL BEGIN DECLARE SECTION;
Varchar varc_name[n+1];
EXEC SQL END DECLARE SECTION;
VARCHAR宏
GBase8s 包含varchar.h头文件,文件中包含如下宏定义
宏名称 | 描述 |
MAXVCLEN | VARCHAR列中保存的最大字符数。 |
VCLENGTH(s) | 定义的变量长度。 |
VCMIN(s) | VARCHAR列中应该保存的最小字符数。 |
VCMAX(s) | VARCHAR列中能够保存的最大字符数 |
VCSIZ(min, max) | 编码后的SIZE值,基于VARCHAR列的最小保留长度和最大长度。是一个4byte值,头两个byte为VARCHAR保留长度, 后两个byte为VARCHAR最大长度。 |
详细使用方法请参照CSDK安装目录下/demo/esqlc/varchar.ec。
当环境变量IFX_PAD_VARCHAR设定为1, 客户端将发送添加空白字符的VARCHAR类型数据到服务器端。