Java直接操作DBF数据表文件核心技术研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:lianzi0118
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文分析了DBF数据表文件的数据存储结构,提出了使用Java语言直接存取DBF数据表文件的方法和关键技术,并结合示例给出了具体实现的核心代码。
  关键词:DBF数据表;Java语言;文件头
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31503-03
  Study on Using Java to Read the Data Structure&Info. of DBF Format
  LU Ning, YANG Wei-ming
  (Southwest Forestry University Computer & Info. Science Department, kunming 650224, China)
  Abastract:In this paper, a technology has been given on how to read the data structure and information about DBF format using Java. Besides, the author also dedicates the source code and a instance which would be helpful for handling specific problems.
  Key words:DBF database; Java; Headfile
  
  1 引言
  
  数据库技术是当代计算机科学的重要分支,一直也是目前计算机科学的一个重点热门研究领域,由于历史的原因,上个世纪国内大量的使用DBF文件格式的数据库,特别现在也大量运用DBF存储地理信息图像信息,使得DBF数据库在我国有着非常庞大的编制和使用队伍。本文分析了DBF数据表文件存储结构,提出了使用面向对象的Java语言直接操作DBF数据表文件的方法和核心技术,并以随机文件读取方式实现了DBF数据表记录的存取操作。这对于了解和分析现代流行的数据库底层结构、数据库驱动程序的开发、数据库的数据加密有着较大的指导意义。
  
  2 DBF数据表文件的结构分析
  
  DBF数据表文件由两部分组成,第一部分是表本身结构描述部分,即文件头,第二部分是表本身的数据内容,即实际存放每一个记录的数据部分。表结构说明部分又分为两个部分,前一部分是关于整个表的结构说明,共32个字节,其各字节描述信息如表1所示。后一部分从第32个字节开始到0DH(字段描述结束符或称为文件头结束标志)为止是字段描述区,每32个字节定义一个字段,包括字段名、字段类型、字段长度、小数位数等,其字段描述的各字节意义如表2所示。
  表1 DBF数据表文件头描述部分(开始的32字节)
  从表1 DBF数据表文件头描述部分的可以得出,记录总数占4个字节,文件头长度占2个字节,记录长度为每条记录的长度,且包括删除标志在内,因低字节在前,其计算公式如下所示:
  记录总数=第4个字节+2561×第5个字节+2562×第6个字节+2563×第7个字节
  文件头长度=第8个字节+2561×第9个字节
  记录长度=第10个字节+2561×第11个字节
  字段名以ASCII码方式存放,最大长度是10个字符,若字段名长度低于10个字符则使用空字符(0x00)填充。字段类型以ASCII码方式存放字母C、N、Y、F、D、T、L、M、G、B、I。
  表2 字段描述部分(每个字段占32字节)
  由上表1、表2分析可以得出,文件头的长度可按下面的公式计算(单位为字节):文件头长度=32(文件头)+32*字段个数+1(结束标志)
  DBF数据表文件的结构部分的结束标志为“0DH”,占1个字节。对于VFP表文件从“0DH”所在的字节开始的263B用于描述自由表或数据库表的相关信息(若为自由表,则取值全为零)。其VFP表文件头长度=32(文件头)+32*字段个数+1(结束标志)+263。然后是数据部分,第一个记录,第二个记录,……。各记录按定长格式以ASCII码方式顺序存放。每个记录的第一个字节是删除标志。若记录被删除,则该字节为2AH(即字符“*”的ASCII码),否则为20H(即空格字符的ASCII码)。各记录间无分隔符。整个文件的结束标志为“1AH”,位于最后一个记录之后的一个字节中。
  通过以上的分析,可以得出DBF数据表文件是自带文件结构描述的记录顺序存放结构。可通过顺序访问记录或根据记录长度通过直接计算定位访问记录两种的方法读取记录。
  
  3 Java读取DBF数据表文件头信息
  
  本文以Visual Foxpro 6.0建立自由表学生信息表(Stud.dbf),并录入示例数据,其数据表结构如表3所示。
  表3 学生信息表(Stud.dbf)
  3.1 读取DBF数据表结构描述部分
  新建一个ReadHeader.java文件,输入如下代码,将ReadHeader.java文件保存在Stud.dbf同一文件夹下。
  import java.io.IOException;
  import java.io.RandomAccessFile;
  public class ReadHeader{
  static RandomAccessFile RndReadDBF;
  public static void main(String[] args) throws IOException {
  RndReadDBF=new RandomAccessFile("Stud.dbf","rw");
  RndReadDBF.skipBytes(4); //跳过前4个字节
  int RecordCount=0;
  //记录总数=第4个字节+2561×第5个字节+2562×第6个字节+2563×第7个字节
  for(int i=0;i<32;i+=8){//读取记录总数,即4~7字节内容,采用移位异或操作实现
  RecordCount|=(RndReadDBF.readByte())&0xff<  int Low=RndReadDBF.readByte()&0xff;//与运算得到低字节内容
  int Hight=RndReadDBF.readByte();
  short TableStrucDescLen=(short)(Hight<<8|Low);
  int RecordLen =RndReadDBF.readByte()&0xff;
  RecordLen+=RndReadDBF.readByte()&0xff<<8;
  System.out.println("记录条数:"+RecordCount);
  System.out.println("表结构长度:"+TableStrucDescLen);
  System.out.println("记录长度:"+RecordLen);
  RndReadDBF.skipBytes(20);
  RndReadDBF.close();}}
  使用javac ReadHeader.java编译程序,使用java ReadHeader执行程序,其执行结果如图1所示:
其他文献
摘要:网络资源的迅速增长使Web挖掘研究日益重要,文章介绍了Web挖掘的概念、流程以及分类,并从挖掘对象、方法、过程等方面分别对Web内容挖掘、Web结构挖掘、和Web使用挖掘进行详细的阐述。  关键词:数据挖掘;Web;Web内容挖掘;Web结构挖掘;Web使用挖掘  中图分类号:TP302文献标识码:A文章编号:1009-3044(2007)18-31502-01  The Rearch of
期刊
摘要:针对无线传感器网络的节能特性和网络应用对服务质量(QoS)要求的不断提高,提出了一种节能高效的服务质量管理机制,运用Agent技术实现传感器节点的信息采集和QoS预约,当网络环境变化时进行QoS协商与再协商。与传统QoS机制相比,基于Agent实现的QoS管理机制能够最大限度对支持网络应用,更适合传感器网络的节能要求,延长网络的生命期。  关键词:无线传感器网络;服务质量;代理  中图分类号
期刊
摘要:随着计算机网络的广泛使用,越来越多的应用需要可靠和有保证的网络服务,这就需要采用QoS(服务质量,Quality of Service)以保证网络提供稳定且有保障的服务。本文介绍了在思科网络设备环境下, NBAR(基于网络应用识别 Network-based Application Recognition)和CBWFQ(基于类的加权公平排队 Class-based Weight Fair Q
期刊
摘要:为了节能减排,保护环境,各地都实行热电联产,集中供热。热电厂的蒸汽用户分布在城市的各个角落,传统的做法是人工抄表,人工巡视,工作量非常大。GPRS(General Packet Radio Service)网络具有广大的覆盖范围,并且可以方便的接入Internet网络,实现数据的远距离传输。建立在GPRS网络基础上的热网远程监测系统,可以实现远程抄表,在线监测供热管网状况。  关键词:GPR
期刊
摘要: 通过较为详细地介绍Web服务及消息中间件技术,明确了将Web服务和消息中间件技术结合的切入点和优势,同时给出了设计面向Web服务的消息中间件系统的设计目标。最后,提出并讨论了一种面向Web服务的消息中间件模型。  关键字: Web服务;消息中间件;面向服务的体系架构;XML  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)18-31491-02  A Mod
期刊
摘要:随着Web服务在分布式系统中的广泛应用,安全问题日益突出。文章描述了使用UsernameForCertificateAssertion安全断言对Web服务进行身份验证的实现方法,并给出了一个利用WSE实现Web 服务身份验证的说明性实例。  关键词:WSE;安全断言;WEB服务  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31530-02  Ident
期刊
摘要:分析了DDOS攻击的特点,介绍了负载均衡群集的优缺点以及在基于DDOS防范的负载均衡群集设计中的应用方式。设计实现了一套典型应用系统,并针对实际攻击作了性能分析。  关键词:群集;DDOS攻击;负载均衡群集  中图法分类号:TP311文献标识码:A 文章编号:1009-3044(2007)18-31522-02  Load balanced Cluster Based on DDOS Gua
期刊
摘要:首先介绍了基于嵌入式操作系统Windows CE的移动通讯设备的一种实现方法以及如何定制Windows CE,如何将定制好的系统下载到开发版上。最后介绍了本系统的关键技术使用GPRS进行发送短消息和打电话,使用GPRS网络与Internet上的计算机通讯。  关键词:Windows CE;Platform Builder;GPRS;串口通信;液晶触摸屏  中图分类号:TP393文献标识码:A
期刊
摘要:论文讨论了工作流技术的重要组成部分及其功能特点,提出了适合通用企业软件框架器的工作流管理系统的设计模式。在该设计模式下,遵循J2EE规范,提出了基于EJB与JSP相结合的技术来实现的工作流管理系统,使得该系统具有良好的结构,高度的可配置性和构件的可重用性,动态地生成页面。  关键词:工作流管理系统;通用企业框架器;J2EE平台  中图分类号:TP317文献标识码:A文章编号:1009-304
期刊
摘要:Web Services Enhancements(WSE)策略框架提供了一种机制,以描述Web服务需要执行的约束和要求。文章将介绍WSE中策略框架的工作方式,讨论WSE3.0支持的安全方案。  关键词:WSE;策略框架;Web服务;安全  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)18-31542-01  Secure Web Services Throu
期刊