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

文档序号:6443553阅读:144来源:国知局
专利名称:一种通过jdbc接口访问平面文件的方法
技术领域
本发明涉及一种访问平面文件的方法,尤其涉及一种通过JDBCCJava数据库连接)接口访问平面文件的方法,属于数据库应用技术领域。
背景技术
平面文件是指除去所有特定应用(程序)格式,从而使数据元素可以迁移到其他应用上进行处理的电子文件。典型的平面文件包括txt、xls、csv等格式的电子文件。这种除去特定应用格式的数据存储方式可以避免因为硬件和专有软件的过时而导致数据丢失。
另一方面,JDBC是Java语言访问数据库的标准接口。它由一组Java语言编写的类和接口组成,使用内嵌式的SQL语句,主要实现三方面的功能建立与数据库的连接,执行SQL语句以及处理SQL语句执行结果。JDBC对于Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。
JDBC接口使用已有的SQL标准并支持与其它数据库的连接标准,如0DBC(开放数据库互连)之间的桥接。通过JDBC接口,可以直接对底层关系数据库执行SQL语句、获取结果集、更新数据等。利用JDBC接口可以构建更高级的工具和接口,使数据库开发人员能够用JavaAPI编写各种数据库应用程序。
图1显示了通过JDBC接口访问关系数据库的基本机制。Java应用程序首先访问关系数据库厂商提供的JDBC接口,进而访问相应的关系数据库。有了 JDBC接口,向各种关系数据库发送SQL语句就是一件很容易的事。应用开发人员只需要用JDBC API编写一个程序,就可以向相应的数据库发送SQL调用语句,而不需要为每种数据库编写相应的应用程序。
但是对于平面文件而言,由于不在关系数据库范畴之内,操作系统厂商并未提供各种编程语言的接口实现,如JDBC或ODBC接口的实现。因此,应用程序访问平面文件只能通过字节流的方式进行。由于操作系统差异、文件编码差异、文件结构差异等问题会导致大量的编码工作,为应用程序编写增加不必要的难度。发明内容
本发明所要解决的技术问题在于提供一种通过JDBC接口访问平面文件的方法。 该方法可以使应用程序像访问关系数据库一样通过JDBC接口访问平面文件。
为实现上述的发明目的,本发明采用下述的技术方案
一种通过JDBC接口访问平面文件的方法,其特征在于包括如下步骤
(1)通过Connection对象与平面文件建立连接;
(2)执行如下操作中的任意一个通过DatabaseMetadata对象获取元信息;创建用于预处理的ft·印arecKtatement对象;创建用于执行SQL语句的Matement对象;
(3)在通过DatabaseMetadata对象获取元信息之后,返回结果集;
(4)通过所述Matement对象或者所述Pi^parecKtatement对象执行SQL语句对所述结果集进行操作。
其中较优地,所述步骤(1)中通过连接串的统一资源定位符中指定的属性决定以下信息文件存放的路径、文件编码格式、行分隔符、列分隔符、文本限定符和文件头是否表示列名。
其中较优地,所述步骤(3)中,获取元信息的方式包括获取表的结果集和获取列的结果集。
获取表的结果集是指根据在连接信息中指定的文件路径以及在该接口方法中指定的过滤条件,以结果集的方式返回所有满足条件的文件,每个文件代表一个表,在结果集中以一条记录表示。
获取列的结果集是指根据在连接串中指定的文件编码格式、行分隔符、列分隔符、 文本限定符和文件头是否表示列名,以结果集的方式返回文件中的所有列,每条记录表示一个列,返回信息中包括列名、列类型。
本发明为应用开发者通过Java应用程序进行平面文件读写提供了方便。利用本发明,应用开发者可以像访问关系数据库一样通过JDBC标准接口访问平面文件,为数据库与平面文件之间的数据迁移和数据同步提供了一个有效的解决手段。


下面结合附图和具体实施方式
对本发明作进一步的详细说明。
图1为现有技术中,Java应用程序通过JDBC接口访问关系数据库的机制示意图2为通过本发明所提供的方法访问平面文件的操作过程示意图3为本发明中,Java应用程序通过JDBC接口访问带格式的平面文件的机制示意图。
具体实施方式
在本发明的一个实施例中,根据应用程序访问平面文件的实际需求,通过编程实现基于JDBC接口的下述对象(a)用于进行关系数据库连接的Connection对象,通过该对象可以指定要读写的平面文件的位置、扩展名、格式、编码等信息;(b)用于获取数据库元信息的DatabaseMetadata对象,通过该对象可以获得关于表、列、类型等元信息;(c)用于执行SQL语句的Matement对象,通过执行DDL(数据定义语言)语句进行文件的创建、删除、结构更改,通过执行DML(数据操纵语言)语句进行文件内容的增删改;(d)用于执行预处理语句的ft·印arecKtatement对象,通过参数绑定,实现对数据库中数据的批量更新; (e)用于存放结果集的Resultkt对象,以结果集的形式,返回文件内容或元信息;(f)用于语法解析的相关类。上述对象和类的具体实现是本领域普通技术人员都能掌握的常规技术手段,在此就不详细说明了。
如图2所示,应用程序利用上述基于JDBC接口的对象和类,通过包括建立连接、获取元信息、查询结果集、对结果集进行操作、通过结果集更新文件等操作步骤实现对平面文件的读写等访问操作。具体说明如下
首先,应用程序通过Connection对象与平面文件建立连接。在建立连接的过程中,可以通过连接串的url (统一资源定位符)中指定的属性来决定文件的以下属性信息 文件存放的路径、文件编码格式、用以区分每条数据的分隔符(行分隔符)、用以区分每个属性的分隔符(列分隔符)、用以处理文本字段的分隔符(文本限定符)、文件头是否表示列名等。文件的位置、扩展名、格式、编码等信息可以直接通过连接串予以指定。
在建立连接以后,可以根据需要执行以下几类对象的操作通过 DatabaseMetadata对象获取元信息,创建用于预处理的ft·印arecKtatement对象,创建用于执行SQL语句的Matement对象。其中DatabaseMetadata对象主要用在以平面文件为目标源的场合,而ft·印arecKtatement对象和Matement对象主要用在以平面文件为数据源的场合。
对于平面文件而言,获取元信息的方式主要有获取表的结果集和获取列的结果集。获取表(getTables)的结果集,是指根据在连接信息中指定的文件路径以及在该接口方法中指定的过滤条件,以结果集(ResultSet)的方式返回所有满足条件的文件,每个文件代表一个表,在结果集中以一条记录表示。获取列(getColumns)的结果集,是指根据在连接串中指定的文件编码格式、行分隔符、列分隔符、文本限定符和文件头是否表示列名等,以结果集(ResultSet)的方式返回文件中的所有列,每条记录表示一个列,返回信息中包括列名、列类型等。
在本发明中,执行SQL语句对结果集进行操作的功能是通过创建Matement对象或I^reparecKtatement对象实现的。对于DDL (数据定义语言)语句和简单SQL语句,可以直接调用Matement对象中的execute方法执行,如创建表和删除表。对于创建表语句,首先调用语法分析模块,解析出SQL语句中的表名、列名,根据表名和连接属性中的指定的文件编码格式,决定创建文件的文件名和格式,再根据连接属性中指定的文件头是否表示列名、 列分隔符、行分隔符,决定向文件中写入的内容。对于删除表语句,首先调用语法分析模块, 解析出SQL语句中的表名,再根据表名找到对应的文件名,删除文件。对于简单的DML(数据操纵语言)语句,如klect语句,首先调用语法分析模块,解析出SQL语句中的表名和列名,根据表名找到对应的文件名,根据列名和连接属性中指定的文件编码格式、行分隔符、 列分隔符,遍历文件,把符合条件的值以结果集的方式返回。
对于基于结果集的批量插入和批量更新操作,可以通过ft·印arecKtatement对象中提供的相关方法实现。具体说明如下首先通过一个预处理SQL语句,声明一个 PreparedStatement对象,调用语法分析模块,解析预处理SQL语句中的表名、列名和占位符,根据占位符信息,构造存储批量更新值的数组。在调用绑定参数的过程中,将对应于占位符的相应值放入数组中的相应位置。在批量提交时,根据表名找到对应的文件名,根据连接属性中指定的文件编码格式、行分隔符、列分隔符,决定写入文件内容的格式,最后,遍历数组,将批量更新的所有记录写入文件中。
如图3所示,Java应用程序可以像访问关系数据库一样,使用JDBC标准接口访问带格式的平面文件。对于应用开发人员来说,应用程序访问平面文件的机制与访问关系数据库的机制完全一样,应用开发人员所关心的接口为同一个标准接口,就是JDBC接口。
通过本发明所提供的平面文件访问方法,可以显著降低应用开发人员实现关系数据库与平面文件交互的难度,减少编码工作量,节约开发成本,提高系统的可维护性和可扩展性。特别是在处理关系数据库与平面文件之间的数据迁移和数据同步方面,使用同一套编码,既可以访问关系数据库,又可以读写平面文件。
以上对本发明所提供的通过JDBC接口访问平面文件的方法进行了详细的说明。 对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
权利要求
1.一种通过JDBC接口访问平面文件的方法,其特征在于包括如下步骤(1)通过Connection对象与平面文件建立连接;(2)执行如下操作中的任意一个通过DatabaseMetadata对象获取元信息;创建用于预处理的I^reparecKtatement对象;创建用于执行SQL语句的Matement对象;(3)在通过DatabaseMetadata对象获取元信息之后,返回结果集;(4)通过所述Matement对象或者所述ft·印arecKtatement对象执行SQL语句对所述结果集进行操作。
2.如权利要求1所述的通过JDBC接口访问平面文件的方法,其特征在于所述步骤(1)中,通过连接串的统一资源定位符中指定的属性决定以下信息文件存放的路径、文件编码格式、行分隔符、列分隔符、文本限定符和文件头是否表示列名。
3.如权利要求1所述的通过JDBC接口访问平面文件的方法,其特征在于所述步骤(3)中,获取元信息的方式包括获取表的结果集和获取列的结果集。
4.如权利要求3所述的通过JDBC接口访问平面文件的方法,其特征在于获取表的结果集是指根据在连接信息中指定的文件路径以及在该接口方法中指定的过滤条件,以结果集的方式返回所有满足条件的文件,每个文件代表一个表,在结果集中以一条记录表示。
5.如权利要求3所述的通过JDBC接口访问平面文件的方法,其特征在于获取列的结果集是指根据在连接串中指定的文件编码格式、行分隔符、列分隔符、文本限定符和文件头是否表示列名,以结果集的方式返回文件中的所有列,每条记录表示一个列,返回信息中包括列名、列类型。
全文摘要
本发明公开了一种通过JDBC接口访问平面文件的方法,包括如下步骤(1)通过Connection对象与平面文件建立连接;(2)执行如下操作中的任意一个通过DatabaseMetadata对象获取元信息;创建用于预处理的PreparedStatement对象;创建用于执行SQL语句的Statement对象;(3)在通过DatabaseMetadata对象获取元信息之后,返回结果集;(4)通过Statement对象或者PreparedStatement对象执行SQL语句对结果集进行操作。利用本发明,应用开发者可以像访问关系数据库一样通过JDBC标准接口访问平面文件,为数据库与平面文件之间的数据迁移和数据同步提供了一个有效的解决手段。
文档编号G06F17/30GK102521408SQ20111044512
公开日2012年6月27日 申请日期2011年12月27日 优先权日2011年12月27日
发明者李品新, 白芸 申请人:北京人大金仓信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1