读书人

C语言访问INFORMIX数据库 SQLDA构造

发布时间: 2012-11-23 22:54:33 作者: rapoo

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

一、简要概述

C语言访问INFORMIX数据库的过程中,当不知道执行的查询语句所返回结果中有多少列,但又要提取查询结果数据时,此时必须使用INFORMIX提供SQLDA结构来达到数据信息提取的目的。现使用一篇来介绍SQLDA结构,先有一个大体的印象,后续章节会详细讲解SQLDA的使用。

二、结构定义

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

图1 SQLDA定义

三、结构说明

从图1中可以看出,SQLDA是一种由三个不同部分组成的可变长数据结构:

1)位于SQLDA开端的sqld用于标志该SQLDA描述了多少列的信息

2)而后是一个或多个sqlvar结构,用于标志列数据。
当用SQLDA把参数送到执行语句时,每一个参数都是一个sqlvar结构;当用SQLDA返回输出列信息时,每一列都是一个sqlvar结构。

3)第三部分是SQLDA结构的描述信息部分。下图为SQLDA各部分关系图示:

C语言访问INFORMIX数据库 — 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

FLOAT

SQLFLOAT

3

SMALLFLOAT

SQLSMFLOAT

4

DECIMAL

SQLDECIMAL

5

SERIAL

SQLSERIAL

6

DATE

SQLDATE

7

MONEY

SQLMONEY

8

DATETIME

SQLDTIME

10

BYTE

SQLBYTES

11

TEXT

SQLTEXT

12

VARCHAR

SQLVCHAR

13

INTERVAL

SQLINTERVAL

14

NCHAR

SQLNCHAR

15

NVARCHAR

SQLNVCHAR

16

INT8

SQLINT8

17

SERIAL8

SQLSERIAL8

18

LVARCHAR

SQLLVARCHAR

43

BOOLEAN

SQLBOOL

45

图3 数据类型代码

读书人网 >其他数据库

热点推荐