日期:2014-05-16  浏览次数:20497 次

C语言访问INFORMIX数据库 — SQLDA结构

一、简要概述

    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