c语言 dbf,C语言直接操作DBF数据库的方法与实现.doc

C语言直接操作DBF数据库的方法与实现

C语言直接操作DBF数据库的方法与实现

C语言直接操作DBF数据库的方法与实现

石家庄军械_x,ll学院谷蕾桥马英忱冯勋欣

捕要本文在对DBAsEI数据库进行剖析的基础上.提出了一种用c语言直接对DBF数据进行数

据读取和记录处理的方法.并结合实佣,说明了C语言编程的步骤和技巧.

1寻l言

C语言不仅具有很强的通用程序设计功

能,而且还有很强的可移植性.对于图像图

形等较复杂的问题,C语言确实都是一种强

有力的工具.但它对于大量数据信息的处

理.不如DBASEI语言.如将C语言和D—

BASEI语言相互调用,取长朴短.一个关

键的问题就是用C语言对DBF数据文件进行

识别和数据处理.因此,建立一套C语言对D—

BF数据库直接读取和处理的方法是十分重

要的.

2DBAS噩数据库文件的结构

剖析

DBF数据库磁盘文件是以二进制数字

和ASCII字符相结合的形式夺储的表1和表

2列出-fDBF数据库文件结构说明部分的内

容.其中,表1包括了文件的标识符.建库

时间,记录个数,结构说明部分的总字节

数等,长度共为32字节.表2进一步说明每

个字段的有关信息,包括字段名称,类型,

长度和小数位个数等.每个字段占32个字节.

在字段描述之后,有一字节(0DH)表示了

文件数据结构说明部分的结束和第一个记录

数据的开始.数据按记录和字段依次排列,

中问无分疆符.每个记录的开始字节是记录

删除标识.当该字节为(2oH)时,表示不删

除.当该字节为(2AH)时.表示有删除.

数据之后为一个字节的文尾标识(1AH)

裹l数据库文件结构说明

位置(字节)长度

O

1—3

4--?

8--9

10--11

12--31

32一(n—1)

1字节

3字节

4字节

2字节

2字节

2O字节

每32字节

1字节

裹2字段描述

位簧(字节)长度

1--1O11

l1l

说明

前两位为版本号

建库日期(年月日)

记录个数

结构部分字节效

记录字节个数

保留

字段描述部分(表2)

说明部分结束标志

0DH

说明

字段名.ASCI字符

字段类型.ASCⅡ

字符

保留

=进制表示字段长度

=进制表示小数位数

保留

工作区标识ID

保留

从表中可以看出,DBF数据库文件主要

包括两部分内容.第一部分是从开始到(32

+32?字段数+1)个字节.第二部分是数据

部分,它是按照第一部分的数据结构说明依

次有序排列的.选样可以通过读取第一部分

微小越计算机开发与应用】帅2.123

坫n

卜¨”∞ll2

的结构信息.在第=部分找到所需的数据位

置和内容.

3语言直接读取DBF

数据库文件的方法

j.打开DBF数据库由于DBF数据库是以

数字和ASCI字符相结合的方式存储文件

的,而且需要对数据库进行读写操作,因此

应采用以读写二进制方式打开文件,耶

fp=fopen(“filename.dbf”,

“r+),

5.2j奏取结构说明倌息首先按表1和表2的

结构说明来定义两个结构用以存放数据库结

构描述信息.

Structdbf1{

charflag~

chardateIs];

uDsignedlongrecord-hum

unsignednl-long;

llnsignedrecord~ong;

charunse[2o],

):

Strucfdbf2~

unsignedcbar

char

cbar

char

char

cbar

char

char

),

利用fread函数,将文件的数据结构说明

部分的全部信息读入结构之中.

fread(结构1指针,32,1fp)}

fread(结构2指针,32,字段个数,

fp)’

3.j读取数据在读取数据之前冼用fse~k

函数确定要读取数据指针的位置,再用fread

函数将数据读到内存.其中字段个数为,

(数据结构说明部分字节数一32—1)/32

24囊小型计算机开蹙与应甩tgg2.

4C语言对DBF数据库的

修改,删除和插入

4.1修改DBF数墨库对于DBF文件的某记

录或记录中的某字段内容,可以采用如下步

骤进行修改.首先.用fseek函数确定记录指

针位置,然后利用fwrire函数写入新的内

容.注意当要写入的内容少于记录所规定的

字节长度时,需加空格填满.

4.2■除DBF数据库的记录首先定义一块

内存空闯,把要删除的内容后面的全部数据

读入该内存空间,再将指针移到删除的开始

位置,将上述的内容写回文件之中,并将文

件的记录个数减1.

4.3插ADBF数据库记录首先定义一块内

存空间,将要插入的位置后面的全部数据放

入内存.然后在此位置上写入新的记录内容,

再将指针移至下一个记录开始处,把内存的

数据写回文件中,最后修改记录数.

完成上述修改,删除和插入等功能需要

注意以下几个问题;

a.对数据库进行操作的最后一步,要修改建

库日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值