|  | 
 
| 第一篇  DBF 文件结构: 
 表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。
 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。
 1.表头记录的结构:
 字节偏移 说明
 0==文件类型
 0x02 FoxBASE
 0x03 FoxBASE+/dBASE III PLUS,无备注
 0x30 Visual FoxPro
 0x43 dBASE IV SQL 表文件,无备注
 0x63 dBASE IV SQL 系统文件,无备注
 0x83 FoxBASE+/dBASE III PLUS,有备注
 0x8B dBASE IV 有备注
 0xCB dBASE IV SQL 表文件,有备注
 0xF5 FoxPro 2.x(或更早版本)有备注
 0xFB FoxBASE
 1 - 3==最近一次更新的时间(YYMMDD)
 4 - 7==文件中的记录数目
 8 - 9==第一个数据记录的位置
 10 - 11==每个数据记录的长度(包括删除标记)
 12 - 27==保留
 28==表的标记
 0x01具有 .cdx 结构的文件
 0x02文件包含备注。
 0x04文件是数据库(.dbc)
 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。
 29==代码页标记
 30 - 31==保留,包含 0x00
 32 - n==字段子记录
 字段的数目决定了字段子记录的数目。表中每个字段都对应一个字段子记录。
 n+1 头记录终止符(0x0D),n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。
 1 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。数据记录从 除标记字节开始。如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据
 2.字段子记录结构
 字节偏移 说明
 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充)
 11 字段类型
 C-字符型
 Y-货币型
 N-数值型
 F-浮点型
 D-日期型
 T-日期时间型
 B-双精度型
 I-整型
 L-逻辑型
 M-备注型
 G-通用型
 C-字符型(二进制)
 M-备注型(二进制)
 P-图片型
 12 - 15 记录中该字段的偏移量
 16 字段长度(以字节为单位)
 17 小数位数
 18 字段标记
 0x01系统列(用户不可见)
 0x02可存储 null 值的列
 0x04二进制列(只适于字符型和备注型)
 19 - 32 保留
 格式保存的文件标头:
 支持 null 值
 日期时间型、货币型及双精度型数据
 字符字段和备注字段标记为二进制
 在数据库 (.dbc) 文件中添加表
 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。
 ===========================================================================
 IDX、CDX文件(这里不是指CorelDRAW的文件)只是DBF的索引文件,不需要恢复,你只要知道索引的是哪个字段,在fox系列数据库软件中用:INDEX ON <关键字段表达式> TO <索引文件名>[.IDX]|TAG<索引标记>[OF<复合索引文件名[.CDX]][FOR <条件>][ASCENDING|DESCENDING] ...就可以重新生成。
 
 [ 本帖最后由 netwinxp 于 2009-6-16 21:42 编辑 ]
 | 
 |