后缀名为.db的数据库文件的文件头格式(200分)

  • 主题发起人 主题发起人 cgx_2001
  • 开始时间 开始时间
C

cgx_2001

Unregistered / Unconfirmed
GUEST, unregistred user!
".db"的文件头格式是什么?如:文件头的位移多少字节是表示文件长度,文件修改日期,
记录长度等。望详细资料。谢谢!
 
你用debug打開看一下,很規律的,一看就清楚了
 
用debug是DOS年代的事情了,多累啊,用Ultra Edit不是很简单吗?
 
我也曾用过Ultra Edit打开看过。
看来我要讲清楚点,我是指文件头前几十个字节的含义,是文件头,而不是数据库记录
文件中的记录用记事本都可打开看到。
 
dBase的格式等同于Foxpro的格式

Foxpro数据库*.DBF的文件结构由头记录和数据记录组成,头记录定义该DBF的结构并包含与该库相关的其
它信息。头记录由文件位置0字节开始。
数据库头部几个关键字节含义如下:(注:库文件中存储整数时低位字节在前)
字节偏移说明
0 库文件的版本类型
1-3 最近更新的日期(YYMMDD)
4-7 库文件中记录的个数
8-9 第一条记录的起始位置
10-11 一条记录的长度(包括删除标记)
其它字节的具体描述不在此赘述,可以参考有关部门书籍或者程序开头注释部分。
 
转贴一篇文章:

DBF等数据库文件的结构分析

XBase .DBF/.DBT(.FPT) 文件结构分析

************* .DBF 结构 *************
Offset Bytes Description
------ ------- --------------------------------------------------------------
一、(文件头, 长 20H 字节, 以下 DW, DD 都是 intel 格式(low/high order) )
0000H 1 结构标志: 03H --- DBASE III (FoxBase/CLIPPER/FoxPro 与之兼容)
83H --- FoxBase + 2.0/2.1
F5H --- FoxPro 2.0/2.5
0001H 3 文件修改日期: 如 5FH, 03H, 0BH 表示 1995.03.11
0004H 4 (DD) 总记录数
0008H 2 (DW) 文件头加结构描述部分的长度
000AH 2 (DW) 每条记录的长度
000CH 20 保留(00H)
二、(各个字段的结构描述部分, 每个字段的说明占 20H 字节, 字段数最多为 128 个)
+00H 10 字段名(大写), 以 00H 补齐, 字段名由字母(或下划线、汉字)或数字
串组成, 但第一个字符不能是数字, 中间也不允许有空格
+0AH 1 字段名结束符(00H)
+0BH 1 字段类型: 'C' --- Character; 'N' --- Numeric; 'D' --- Date;
'L' --- Logical; 'M' --- Memo;
FoxPro: 'F' --- Float
+0CH 4 (DD) 字段数据相对于该记录的偏移量,第一个字段一般为00000001H
若为 00000000H 或 大于 00001000H 则需要通过计算确定
+10H 1 字段宽度( Character: 最长 254 字节, Numeric: 最长 19 位,
Date: 08H, Logical: 01H, Memo: 0AH )
+11H 1 小数点后位数(Character/Date/Logical/Memo: 00H)
+12H 14 保留(00H)
...........................
1 字段结构描述结束符(0DH), 也可能是 2 个字节(0DH,00H)
三、(以下是每条记录的内容, 各字段间和各条记录间均无分隔符, 顺序存放)
注: 1. 每条记录的第一字节为删除标志: 20H(' ') --- 正常记录
2AH('*') --- 有删除标记的记录
2. 每条记录字符数最多为 4000
3. Char 型数据右边以空格补齐
4. Number 型数据也以ASCII码存放(负数前有'-'号), 右对齐
小数包括'.', 右边不足的小数位以'0'补齐, 左边以空格补齐
5. Date 型数据以ASCII码存放, 如' ','19950311', '20990517'
6. Logical 型数据以ASCII码存放, 'F' 或 ' ' 表示 .F., 'T' 表示 .T.
7. Memo 型数据以ASCII码存放在相应 .DBT/.FPT 文件中的起始块号, 占 10 个
字节,右对齐,如 ' 5' 表示 .DBT 的第 6 块, 若 10 个字节全为空
格,表示无内容
四、(文件结束符: 1 字节 (=1AH) )

****************** .DBT/.FPT 结构 ******************
DBASE III/FoxBase 的备注型字段内容存放在相应的 .DBT 文件中, 而 FoxPro 则存
放在相应的 .FPT 文件中, .DBT/.FPT 文件包括文件头( h 块)和文件体( b 块). 所有的
块都有编号, 文件头第一块的块号为 0
每条记录的一个 Memo 字段对应于 .DBT/.FPT 的 0 块或连续的 n 块(对 DBASE III,
n 最大为 8), 其内容每一行的硬回车以 0DH, 0AH 表示(.DBT 最后还可以有软回车, 以
8DH, 0AH 表示)
.DBT 中字段的实际内容以 1AH 作为结束, 其后以 00H 补齐一块(最后一块不补齐)
数据库经过多次修改后, 某些块可能不对应于 .DBF 的记录, 成为无效的块
.DBT 的块长为 200H 字节. 文件头占一块(h = 1), 文件头前 4 字节(DD) 表示 .DBT
文件的总块数, 后 252 字节保留(00H)
.FPT 的块长随文件而异(一般为 40H 字节, 也可以是 21H 字节等). 文件头占一块或
多块, 文件头偏移 0---3 共 4 字节( high/low 格式) 表示 .FPT 文件的总块数, 文件头
偏移 4---7 共 4 字节( high/low 格式) 表示 .FPT 文件的块长, 其后的字节保留(00H).
字段内容对应的连续 n 块中其首块偏移 0---3 共 4 字节( high/low 格式) 表示计数单
位(一般为1), 偏移 4---7 共 4 字节( high/low 格式) 表示 .FPT 字段内容有效长度,
其后的字节才是字段实际内容, 最后一般以 00H 补齐一块(文件的最后一块不补齐)
 
.db的头文件与.dbf的并不一样吧
至于转载的文章,我曾看过(好象叫一个良友程序的网页),但与.db的头文件格式配不上
 
Database file structure

The structure of a dBASE III database file is composed of a header
and data records. The layout is given below.


dBASE III DATABASE FILE HEADER:

+---------+-------------------+---------------------------------+
| BYTE | CONTENTS | MEANING |
+---------+-------------------+---------------------------------+
| 0 | 1 byte | dBASE III version number |
| | | (03H without a .DBT file) |
| | | (83H with a .DBT file) |
+---------+-------------------+---------------------------------+
| 1-3 | 3 bytes | date of last update |
| | | (YY MM DD) in binary format |
+---------+-------------------+---------------------------------+
| 4-7 | 32 bit number | number of records in data file |
+---------+-------------------+---------------------------------+
| 8-9 | 16 bit number | length of header structure |
+---------+-------------------+---------------------------------+
| 10-11 | 16 bit number | length of the record |
+---------+-------------------+---------------------------------+
| 12-31 | 20 bytes | reserved bytes (version 1.00) |
+---------+-------------------+---------------------------------+
| 32-n | 32 bytes each | field descriptor array |
| | | (see below) | --+
+---------+-------------------+---------------------------------+ |
| n+1 | 1 byte | 0DH as the field terminator | |
+---------+-------------------+---------------------------------+ |
|
|
A FIELD DESCRIPTOR: <------------------------------------------+

+---------+-------------------+---------------------------------+
| BYTE | CONTENTS | MEANING |
+---------+-------------------+---------------------------------+
| 0-10 | 11 bytes | field name in ASCII zero-filled |
+---------+-------------------+---------------------------------+
| 11 | 1 byte | field type in ASCII |
| | | (C N L D or M) |
+---------+-------------------+---------------------------------+
| 12-15 | 32 bit number | field data address |
| | | (address is set in memory) |
+---------+-------------------+---------------------------------+
| 16 | 1 byte | field length in binary |
+---------+-------------------+---------------------------------+
| 17 | 1 byte | field decimal count in binary |
+---------+-------------------+---------------------------------+
| 18-31 | 14 bytes | reserved bytes (version 1.00) |
+---------+-------------------+---------------------------------+


The data records are layed out as follows:

1. Data records are preceeded by one byte that is a space (20H) if the
record is not deleted and an asterisk (2AH) if it is deleted.

2. Data fields are packed into records with no field separators or
record terminators.

3. Data types are stored in ASCII format as follows:

DATA TYPE DATA RECORD STORAGE
--------- --------------------------------------------
Character (ASCII characters)
Numeric - . 0 1 2 3 4 5 6 7 8 9
Logical ? Y y N n T t F f (? when not initialized)
Memo (10 digits representing a .DBT block number)
Date (8 digits in YYYYMMDD format, such as
19840704 for July 4, 1984)
 
用Ultra Edit就可看到
 
谢谢HD_COPY的资料,不过我要的是PARADOX的资料,dbase的不合适.
 
99年的程序员大本营光盘里有,英文版的,我看过
找找看吧
没有我在发给你
 
麻烦你贴出来,谢谢!
 
在http://www.csdn.net/dev/Format/ 中有PARADOX4.0文件格式(RTF文档)

下载: http://www.csdn.net/dev/Format/data/paradox.rtf

 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部