首页> 中国专利> 一种通过JDBC接口访问平面文件的方法

一种通过JDBC接口访问平面文件的方法

摘要

本发明公开了一种通过JDBC接口访问平面文件的方法,包括如下步骤:(1)通过Connection对象与平面文件建立连接;(2)执行如下操作中的任意一个:通过DatabaseMetadata对象获取元信息;创建用于预处理的PreparedStatement对象;创建用于执行SQL语句的Statement对象;(3)在通过DatabaseMetadata对象获取元信息之后,返回结果集;(4)通过Statement对象或者PreparedStatement对象执行SQL语句对结果集进行操作。利用本发明,应用开发者可以像访问关系数据库一样通过JDBC标准接口访问平面文件,为数据库与平面文件之间的数据迁移和数据同步提供了一个有效的解决手段。

著录项

  • 公开/公告号CN102521408A

    专利类型发明专利

  • 公开/公告日2012-06-27

    原文格式PDF

  • 申请/专利号CN201110445127.0

  • 发明设计人 李品新;白芸;

    申请日2011-12-27

  • 分类号

  • 代理机构北京汲智翼成知识产权代理事务所(普通合伙);

  • 代理人陈曦

  • 地址 100085 北京市海淀区上地西路8号院4号楼601室

  • 入库时间 2023-12-18 05:43:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-04-08

    授权

    授权

  • 2013-01-16

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20111227

    实质审查的生效

  • 2012-06-27

    公开

    公开

说明书

技术领域

本发明涉及一种访问平面文件的方法,尤其涉及一种通过JDBC (Java数据库连接)接口访问平面文件的方法,属于数据库应用技术 领域。

背景技术

平面文件是指除去所有特定应用(程序)格式,从而使数据元素 可以迁移到其他应用上进行处理的电子文件。典型的平面文件包括 txt、xls、csv等格式的电子文件。这种除去特定应用格式的数据存 储方式可以避免因为硬件和专有软件的过时而导致数据丢失。

另一方面,JDBC是Java语言访问数据库的标准接口。它由一组 Java语言编写的类和接口组成,使用内嵌式的SQL语句,主要实现三 方面的功能:建立与数据库的连接,执行SQL语句以及处理SQL语句 执行结果。JDBC对于Java程序员而言是API,对实现与数据库连接的 服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的 接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供 了标准方法。

JDBC接口使用已有的SQL标准并支持与其它数据库的连接标准, 如ODBC(开放数据库互连)之间的桥接。通过JDBC接口,可以直接 对底层关系数据库执行SQL语句、获取结果集、更新数据等。利用JDBC 接口可以构建更高级的工具和接口,使数据库开发人员能够用Java API编写各种数据库应用程序。

图1显示了通过JDBC接口访问关系数据库的基本机制。Java应用 程序首先访问关系数据库厂商提供的JDBC接口,进而访问相应的关系 数据库。有了JDBC接口,向各种关系数据库发送SQL语句就是一件很 容易的事。应用开发人员只需要用JDBC API编写一个程序,就可以向 相应的数据库发送SQL调用语句,而不需要为每种数据库编写相应的 应用程序。

但是对于平面文件而言,由于不在关系数据库范畴之内,操作系 统厂商并未提供各种编程语言的接口实现,如JDBC或ODBC接口的实 现。因此,应用程序访问平面文件只能通过字节流的方式进行。由于 操作系统差异、文件编码差异、文件结构差异等问题会导致大量的编 码工作,为应用程序编写增加不必要的难度。

发明内容

本发明所要解决的技术问题在于提供一种通过JDBC接口访问平 面文件的方法。该方法可以使应用程序像访问关系数据库一样通过JDBC 接口访问平面文件。

为实现上述的发明目的,本发明采用下述的技术方案:

一种通过JDBC接口访问平面文件的方法,其特征在于包括如下步 骤:

(1)通过Connection对象与平面文件建立连接;

(2)执行如下操作中的任意一个:通过DatabaseMetadata对象获取 元信息;创建用于预处理的PreparedStatement对象;创建用于执行SQL 语句的Statement对象;

(3)在通过DatabaseMetadata对象获取元信息之后,返回结果集;

(4)通过所述Statement对象或者所述PreparedStatement对象执行 SQL语句对所述结果集进行操作。

其中较优地,所述步骤(1)中通过连接串的统一资源定位符中指定的 属性决定以下信息:文件存放的路径、文件编码格式、行分隔符、列分 隔符、文本限定符和文件头是否表示列名。

其中较优地,所述步骤(3)中,获取元信息的方式包括获取表的结果 集和获取列的结果集。

获取表的结果集是指根据在连接信息中指定的文件路径以及在该接 口方法中指定的过滤条件,以结果集的方式返回所有满足条件的文件, 每个文件代表一个表,在结果集中以一条记录表示。

获取列的结果集是指根据在连接串中指定的文件编码格式、行分隔 符、列分隔符、文本限定符和文件头是否表示列名,以结果集的方式返 回文件中的所有列,每条记录表示一个列,返回信息中包括列名、列类 型。

本发明为应用开发者通过Java应用程序进行平面文件读写提供 了方便。利用本发明,应用开发者可以像访问关系数据库一样通过JDBC 标准接口访问平面文件,为数据库与平面文件之间的数据迁移和数据 同步提供了一个有效的解决手段。

附图说明

下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为现有技术中,Java应用程序通过JDBC接口访问关系数据库 的机制示意图;

图2为通过本发明所提供的方法访问平面文件的操作过程示意图;

图3为本发明中,Java应用程序通过JDBC接口访问带格式的平面 文件的机制示意图。

具体实施方式

在本发明的一个实施例中,根据应用程序访问平面文件的实际需求, 通过编程实现基于JDBC接口的下述对象:(a)用于进行关系数据库连接 的Connection对象,通过该对象可以指定要读写的平面文件的位置、扩 展名、格式、编码等信息;(b)用于获取数据库元信息的 DatabaseMetadata对象,通过该对象可以获得关于表、列、类型等元信 息;(c)用于执行SQL语句的Statement对象,通过执行DDL(数据定义 语言)语句进行文件的创建、删除、结构更改,通过执行DML(数据操纵 语言)语句进行文件内容的增删改;(d)用于执行预处理语句的 PreparedStatement对象,通过参数绑定,实现对数据库中数据的批量更 新;(e)用于存放结果集的ResultSet对象,以结果集的形式,返回文 件内容或元信息;(f)用于语法解析的相关类。上述对象和类的具体实 现是本领域普通技术人员都能掌握的常规技术手段,在此就不详细说明 了。

如图2所示,应用程序利用上述基于JDBC接口的对象和类,通过包 括建立连接、获取元信息、查询结果集、对结果集进行操作、通过结果 集更新文件等操作步骤实现对平面文件的读写等访问操作。具体说明如 下:

首先,应用程序通过Connection对象与平面文件建立连接。在建立 连接的过程中,可以通过连接串的url(统一资源定位符)中指定的属性 来决定文件的以下属性信息:文件存放的路径、文件编码格式、用以区 分每条数据的分隔符(行分隔符)、用以区分每个属性的分隔符(列分隔 符)、用以处理文本字段的分隔符(文本限定符)、文件头是否表示列名 等。文件的位置、扩展名、格式、编码等信息可以直接通过连接串予以 指定。

在建立连接以后,可以根据需要执行以下几类对象的操作:通过 DatabaseMetadata对象获取元信息,创建用于预处理的 PreparedStatement对象,创建用于执行SQL语句的Statement对象。其 中DatabaseMetadata对象主要用在以平面文件为目标源的场合,而 PreparedStatement对象和Statement对象主要用在以平面文件为数据源 的场合。

对于平面文件而言,获取元信息的方式主要有获取表的结果集和获 取列的结果集。获取表(getTables)的结果集,是指根据在连接信息中 指定的文件路径以及在该接口方法中指定的过滤条件,以结果集 (ResultSet)的方式返回所有满足条件的文件,每个文件代表一个表, 在结果集中以一条记录表示。获取列(getColumns)的结果集,是指根 据在连接串中指定的文件编码格式、行分隔符、列分隔符、文本限定符 和文件头是否表示列名等,以结果集(ResultSet)的方式返回文件中的 所有列,每条记录表示一个列,返回信息中包括列名、列类型等。

在本发明中,执行SQL语句对结果集进行操作的功能是通过创建 Statement对象或PreparedStatement对象实现的。对于DDL(数据定义 语言)语句和简单SQL语句,可以直接调用Statement对象中的execute 方法执行,如创建表和删除表。对于创建表语句,首先调用语法分析模 块,解析出SQL语句中的表名、列名,根据表名和连接属性中的指定的 文件编码格式,决定创建文件的文件名和格式,再根据连接属性中指定 的文件头是否表示列名、列分隔符、行分隔符,决定向文件中写入的内 容。对于删除表语句,首先调用语法分析模块,解析出SQL语句中的表 名,再根据表名找到对应的文件名,删除文件。对于简单的DML(数据操 纵语言)语句,如Select语句,首先调用语法分析模块,解析出SQL语 句中的表名和列名,根据表名找到对应的文件名,根据列名和连接属性 中指定的文件编码格式、行分隔符、列分隔符,遍历文件,把符合条件 的值以结果集的方式返回。

对于基于结果集的批量插入和批量更新操作,可以通过 PreparedStatement对象中提供的相关方法实现。具体说明如下:首先通 过一个预处理SQL语句,声明一个PreparedStatement对象,调用语法 分析模块,解析预处理SQL语句中的表名、列名和占位符,根据占位符 信息,构造存储批量更新值的数组。在调用绑定参数的过程中,将对应 于占位符的相应值放入数组中的相应位置。在批量提交时,根据表名找 到对应的文件名,根据连接属性中指定的文件编码格式、行分隔符、列 分隔符,决定写入文件内容的格式,最后,遍历数组,将批量更新的所 有记录写入文件中。

如图3所示,Java应用程序可以像访问关系数据库一样,使用JDBC 标准接口访问带格式的平面文件。对于应用开发人员来说,应用程序访 问平面文件的机制与访问关系数据库的机制完全一样,应用开发人员所 关心的接口为同一个标准接口,就是JDBC接口。

通过本发明所提供的平面文件访问方法,可以显著降低应用开发人 员实现关系数据库与平面文件交互的难度,减少编码工作量,节约开发 成本,提高系统的可维护性和可扩展性。特别是在处理关系数据库与平 面文件之间的数据迁移和数据同步方面,使用同一套编码,既可以访问 关系数据库,又可以读写平面文件。

以上对本发明所提供的通过JDBC接口访问平面文件的方法进行 了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神 的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权 的侵犯,将承担相应的法律责任。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号