日期:2014-05-16 浏览次数:20497 次
一、简要概述
C语言访问INFORMIX数据库的过程中,当不知道执行的查询语句所返回结果中有多少列,但又要提取查询结果数据时,此时必须使用INFORMIX提供SQLDA结构来达到数据信息提取的目的。现使用一篇来介绍SQLDA结构,先有一个大体的印象,后续章节会详细讲解SQLDA的使用。
二、结构定义
图1 SQLDA定义
三、结构说明
从图1中可以看出,SQLDA是一种由三个不同部分组成的可变长数据结构:
1)位于SQLDA开端的sqld用于标志该SQLDA描述了多少列的信息
2)而后是一个或多个sqlvar结构,用于标志列数据。
当用SQLDA把参数送到执行语句时,每一个参数都是一个sqlvar结构;当用SQLDA返回输出列信息时,每一列都是一个sqlvar结构。
3)第三部分是SQLDA结构的描述信息部分。下图为SQLDA各部分关系图示:
图2 SQLDA各部分关系
四、成员说明
1. sqld:使用的sqlvar结构的个数,即:输出列的个数
2. sqlvar:指向struct sqlvar_struct结构体,即:指向描述第一列信息的sqlvar结构体
3. desc_name:sqlda名称
4. desc_occ:sqlda结构的大小
5. desc_next:指向下一个SQLDA结构
6. sqltype:代表参数或列的数据类型。它是一个整数数据类型代码。如图3中的“宏定义”列。
7. sqllen:代表传送数据的长度。
8. sqldata:指向数据的地址。
9. sqlind:代表是否为NULL。如果该列不允许为NULL,则该字段不赋值;如果该列允许为NULL,则:该字段若为0,表示数据值不为NULL,若为-1,表示数据值为NULL。
10. sqlname:代表列名或变量名。
11. sqlformat:保留以后使用
12. sqlitype:指定用户定义的指示符变量的数据类型。
13. sqlilen:指定用户定义的指示符变量的长度。
14. sqlidata:指向用户定义的指示符变量所存放的数据。
外部数据类型 |
宏定义 |
代码 |
CHAR |
SQLCHAR |
0 |
SMALLINT |
SQLSMINT |
1 |
INTEGER |
SQLINT |
2 |
|