GBase8s ESQL/C字符串数据类型
GBase8s ESQL/C支持5种字符串数据类型, 如果在数据库的列中使用字符串类型,例如CHAR或者VARCHAR, 以下ESQL/C字符串类型可以使用:
- C语言的char类型
- GBase8s ESQL/C预定义类型, fixchar, string, varchar
- lvarchar数据类型
具体使用那种数据类型,参考以下条件:
- 是否希望ESQL/C使用空字符来作为字符串的结束符。
- 是否希望使用空白字符填充。
ESQL/C 字符串类型
ESQL/C 字符串类型 | Null结尾 | 包含空白字符 |
char | Y | Y |
fixchar | Y | |
string | Y | 只有在列中包含空白字符时,才会包含空白字符, 不会自动添加空白字符。 |
varchar | Y | Y |
lvarchar | Y |
char数据类型
当应用程序从数据库的CHAR类型的列中,读取数据,保存到char类型的变量中,ESQL/C会添加空白字符在字符串的末尾,将最后一位留给终止字符null。
生成char数组时, 其长度应设定为n+1, n为数据库中列的长度, 1为null终止字符。
fixchar数据类型
fixchar为ESQL/C预定义的变量类型。
当应用程序从数据库的CHAR类型的列中,读取数据,保存到fixchar类型的变量中,ESQL/C会添加空白字符在字符串的末尾,不会添加null终止字符。
限制:不要使用fixchar类型来处理VARCHAR或者NVARCHAR的数据,如果使用fixchar,即使VARCHAR或NVARCHAR的数据长度小于fixchar的长度, 数据库服务器会将fixchar数据剩余的空间全部填充为空白字符, 导致空间浪费。
声明fixchar数据类型时,使用如下格式:
EXEC SQL BEGIN DECLARE SECTION;
fixchar fch_name[n];
EXEC SQL END DECLARE SECTION;
其中n就是数据库的CHAR类型列的长度。
注意:
如果将以null终止符结尾的字符串拷贝到fixchar类型中,null终止符将会保存到数据库的列中,导致该数据无法查询出来。