ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:18.57KB ,
资源ID:2102240      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2102240.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DBF文件结构中文说明.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DBF文件结构中文说明.docx

1、DBF文件结构中文说明标准的DBF文件,是由头文件和实体信息两部分构成(如图所示)。文件头记录1记录2记录3记录4记录nDBF文件的结构1)文件的文件头其中文件头部分的长度是不定长的,它主要对DBF文件作了一些总体说明(表),其中最主要的是对这个DBF文件的记录项的信息进行了详细地描述,比如对每个记录项的名称、数据类型、长度等信息都有具体的说明。在文件中的位置内容说明01个字节表示当前的版本信息133个字节表示最近的更新日期,按照YYMMDD格式。471个32位数文件中的记录条数。891个16位数文件头中的字节数。10111个16位数一条记录中的字节长度。12132个字节保留字节,用于以后添加

2、新的说明性信息时使用,这里用0来填写。141个字节表示未完成的操作。 151个字节dBASE IV编密码标记。162712个字节保留字节,用于多用户处理时使用。281个字节DBF文件的MDX标识。在创建一个DBF 表时 ,如果使用了MDX 格式的索引文件,那么 DBF 表的表头中的这个字节就自动被设置了一个标志,当你下次试图重新打开这个DBF表的时候,数据引擎会自动识别这个标志,如果此标志为真,则数据引擎将试图打开相应的MDX 文件。291个字节Language driver ID.30312个字节保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。32X(n*32)个字节记录项信息描

3、述数组。n表示记录项的个数。这个数组的结构在表2.8中有详细的解释。X11个字节作为记录项终止标识。文件(.dbf)的文件头位置内容说明01011个字节记录项名称,是ASCII码值。111个字节记录项的数据类型,是ASCII码值。(B、C、D、G、L、M和N,具体的解释见表2.9)。12154个字节记录中该字段的偏移量。161个字节记录项长度,二进制型。171个字节记录项的精度,二进制型。201个字节工作区ID。213010个字节保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。311个字节MDX标识。如果存在一个MDX 格式的索引文件,那么这个记录项为真,否则为空。 记录项信息描述

4、代码数据类型允许输入的数据B二进制型 双精度型各种字符。C字符型各种字符。D日期型用于区分年、月、日的数字和一个字符,内部存储按照YYYYMMDD格式。G(Generalor OLE) 通用类型各种字符。N数值型(Numeric)- . 0 1 2 3 4 5 6 7 8 9 L逻辑型(Logical)? Y y N n T t F f (? 表示没有初始化)。 M(Memo)各种字符。Y货币型F浮点型I整形P图片表2.9 dbf文件中的数据类型2) 文件的实体信息实体信息部分就是一条条记录,每条记录都是由若干个记录项构成,因此只要依次循环读取每条记录就可以了。3) 一个读取dbf文件的例子假

5、设要读取一个名为soil的dbf文件(存储了土地利用信息),它含有8个记录项,记录项信息如表所示:记录项名称数据类型长度小数位数Area 数值型(double)3115Perimeter数值型(double)3115soils_数值型(int)110soils_id数值型(int)110soil_code字符型(character)3无Suit字符型(character)1无Centroid_x数值型(double)3115Centroid_y数值型(double)3115 dbf文件中的数据类型2、行情文件格式说明:(1)、表文件由头记录及数据记录组成。头记录定义该表的结构及与表相关的其他信

6、息。数据记录紧接在头记录之后,包含字段中实际的文本。记录的长度等于所有字段定义的长度之和(以字节为单位)。(2)、头记录以终止符(0x0D)结束,数据记录以终止符(0x1A)结束。(3)、表文件中存储整数时低位字节在前。(4)、数据记录从删除标记字节开始。如果删除标记字节为ASCII空格(0x20),则表示该记录未被删除,如果该字节为星号(0x2A),则表示该记录被删除。在删除标记之后是字段记录中所命名的各字段的数据。(5)、数据记录都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。文件头部结构(32字节)位置长度含义备注01文件类型

7、0x03,FoxBASE+/dBASE III PLUS,无备注1 - 33最近一次更新的时间(YYMMDD)4 - 74文件中的记录数目8 - 92文件中的第一个数据记录的位置10 - 112每个数据记录的长度(包括删除标记)12 - 3120保留32 - n字段子记录字段的数目决定了字段子记录的数目。字段记录结构(32字节)位置长度说明备注0 - 1011字段名最多10个字符,若少于10则用空字符填充111字段类型C-字符型Y-货币型N-数值型F-浮点型D-日期型T-日期时间型B-双精度型I-整型L-逻辑型M-备注型G-通用型C-字符型(二进制)M-备注型(二进制)P-图片型12 - 15

8、4记录中该字段的偏移量(16进制)161字段长度以字节为单位171小数位数以字节为单位18 - 3114保留n+1 头记录终止符(0x0D),n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。数据记录从 除标记字节开始。如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据下面是读取这个dbf文件的代码:void OnReadDbf(CStrin

9、g Dbf) FILE* m_Dbf; /*Dbf文件指针 /打开dbf文件 if(m_Dbf(Dbf,rb)=NULL) return; int i,j; /*读取dbf文件的文件头 开始 BYTE version; fread(&version, 1, 1,m_Dbf); BYTE date3; for(i=0;i3;i+) fread(date+i, 1, 1,m_Dbf); int RecordNum; /* fread(&RecordNum, sizeof(int), 1,m_Dbf); short HeaderByteNum; fread(&HeaderByteNum, sizeo

10、f(short), 1,m_Dbf); short RecordByteNum fread(&RecordByteNum, sizeof(short), 1,m_Dbf); short Reserved1; fread(&Reserved1, sizeof(short), 1,m_Dbf); BYTE Flag4s; fread(&Flag4s, sizeof(BYTE), 1,m_Dbf); BYTE EncrypteFlag; fread(&EncrypteFlag, sizeof(BYTE), 1,m_Dbf); for(i=0;i3;i+) fread(&Unused, sizeof(

11、int), 1,m_Dbf); BYTE MDXFlag; fread(&MDXFlag, sizeof(BYTE), 1,m_Dbf); BYTE LDriID; fread(&LDriID, sizeof(BYTE), 1,m_Dbf); short Reserved2; fread(&Reserved2, sizeof(short), 1,m_Dbf); BYTE name11; BYTE fieldType; int Reserved3; BYTE fieldLength; BYTE decimalCount; short Reserved4; BYTE workID; short Reserved55; BYTE mDXFlag1; int fieldscount; fieldscount = (HeaderByteNum - 32) / 32; /读取记录项信息共有8个记录项 for(i=0;i HeaderByteNum;i+) /FieldName-11 bytes fread(name, 11, 1,m_Dbf); /FieldType-1 bytes fread(&fieldType, sizeof(BYTE), 1,m_Dbf); /Reserved3-4 bytes Reserved3 =0; fread(&Reserved3, sizeof(int)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1