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

一、简要概述

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

二、结构定义

图1 SQLDA定义

三、结构说明

从图1中可以看出,SQLDA是一种由三个不同部分组成的可变长数据结构:
1)第一部分:是SQLDA结构体本身
2)第二部分:一个或多个sqlvar结构,用于标志列的基本信息。
当用SQLDA把参数送到执行语句时,每一个参数都是一个sqlvar结构;当用SQLDA返回输出列信息时,每一列都是一个sqlvar结构。
3)第三部分:是查找结果的描述信息。

下图为SQLDA各部分关系图示:

图2 SQLDA各部分关系

四、成员说明

>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:指向用户定义的指示符变量所存放的数据。

五、数据类型

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

图3 数据类型代码
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值