您的位置:首页 > 编程语言 > C语言/C++

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

2012-11-20 22:14 197 查看

1 简要概述

  C语言通过ESQL访问informix数据库过程中,当不知道所执行的SQL查询语句返回结果中有多少列,但又要准确的获取查询结果时,此时必须使用informix提供的SQLDA结构来达到目的。此篇将较详细的介绍SQLDA的内部结构,,后续篇章将会详细讲解SQLDA的使用。

2 结构定义



图1 SQLDA定义

3 结构说明

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

1)第一部分:是SQLDA结构体本身

2)第二部分:一个或多个sqlvar结构,用于标志列的基本信息。

      当用SQLDA把参数送到执行语句时,每一个参数都是一个sqlvar结构;当用SQLDA返回输出列信息时,每一列都是一个sqlvar结构。

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



图2 SQLDA各部分关系

4 成员说明

>01. sqld:使用的sqlvar结构的个数,即:输出列的个数

>02. sqlvar:指向struct sqlvar_struct结构体,即:指向描述第一列信息的sqlvar结构体

>03. desc_name:sqlda名称

>04. desc_occ:sqlda结构的大小

>05. desc_next:指向下一个SQLDA结构

>06. sqltype:代表参数或列的数据类型。它是一个整数数据类型代码。如图3中的“宏定义”列。

>07. sqllen:代表传送数据的长度。

>08. sqldata:指向数据的地址。

>09. sqlind:代表是否为NULL。如果该列不允许为NULL,则该字段不赋值;如果该列允许为NULL,则:该字段若为0,表示数据值不为NULL,若为-1,表示数据值为NULL。

>10. sqlname:代表列名或变量名。

>11. sqlformat:保留以后使用

>12. sqlitype:指定用户定义的指示符变量的数据类型。

>13. sqlilen:指定用户定义的指示符变量的长度。

>14. sqlidata:指向用户定义的指示符变量所存放的数据。

5 数据类型

C数据类型
宏定义
代码
CCHARTYPE
SQLCHAR
0
CSHORTTYPE
SQLSMINT
1
CINTTYPE
SQLINT
2
CDOUBLETYPE
SQLFLOAT
3
CDOUBLETYPE
SQLSMFLOAT
4
CDECIMALTYPE
SQLDECIMAL
5
CINT8TYPE
SQLSERIAL
6
CDATETYPE
SQLDATE
7
CMONEYTYPE
SQLMONEY
8
CDTIMETYPE
SQLDTIME
10
CLOCATORTYPE
SQLBYTES
11
CLOCATORTYPE
SQLTEXT
12
CVCHARTYPE
SQLVCHAR
13
CINVTYPE
SQLINTERVAL
14
CFIXCHARTYPE
SQLNCHAR
15
CVCHARTYPE
SQLNVCHAR
16
CINT8TYPE
SQLINT8
17
CINT8TYPE
SQLSERIAL8
18
CLVARCHARTYPE
SQLLVARCHAR
43
CBOOLTYPE
SQLBOOL
45
[align=center]图3 数据类型代码[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: