2012年1月内蒙古科技与经济Januar y 2012 第1期总第251期Inner M o ngo lia Science T echnolo gy &Economy N o .1T o tal N o .251利用JavaBeans 实现两种数据库间数据导入的一种方法X张 斌1,刘彦军2,张凤英3,侯 峰1(1.内蒙古医学院;2.内蒙古财经学院;3.和林格尔县高级中学,内蒙古呼和浩特 010000) 摘 要:讨论了在B/S 模式下,实现不同数据库之间的数据互访,实现教学管理系统中异构数库之间的数据转换的一个方法。
论述了一个基于JDBC(Jav a Dat aBase Connectiv it y )异构数据库教学管理系统的实现过程。
在该系统中,利用JavaBeans 实现了JDBC 驱动程序的动态加载和数据库的动态链接,从而使系统具有较强的灵活性和开放性。
关键词:JDBC ;ODBC ;JavaBeans ;JDBC ——ODBC Bridg e ;数据库 中图分类号:T P311 文献标识码:A 文章编号:1007—6921(2012)01—0080—03 计算机网络化的加速发展和网络性能的提高,使信息系统得到了快速的发展。
为了充分利用各信息系统已有的数据源,经常需要实现不同信息系统之间的数据互访。
然而,系统实现技术以及实现时间上的差异,造成了在不同的信息系统中存有大量异构数据源。
当前,世界上大量宝贵的有价值的信息都以不同形式存放于不同类型的数据库系统中。
传统而普遍的Client /Sever 结构数据库系统不易于动态地适应企业、教育等行业日益增长的业务要求,不能跨平台应用,长期的维护需要很高的费用。
另一方面,从数据的存储方式上看,在本质上表示相同的信息的数据,在不同的数据源中被定义为不同的存储方式。
如:定义字段的不同,字段的类型不同,定义字段的长度不同等等。
异构数据库的存在给实现不同信息系统间数据互访带来了很大不便。
为此,解决异构数据源方便、灵活的互访问题便成为一个有意义的研究课题,尤其是在教学管理系统中实现两种不同数据库间数据的导入和导出。
1 解决方案在实现异构数据库间数据的转换与互访过程中,笔者总结了几种解决方案,通过几种方案的比较,可以选出一种比较合理的、方便的、易于使用的解决方案来实现异构数据库间数据的转换与互访,尤其是利用JDBC 技术以及第三方提供的驱动程序来实现数据库间数据的导入与导出就更为方便了。
在教务管理信息系统中的学籍管理部分,笔者就是利用JDBC 技术来实现数据库间数据的导入。
1.1 传统的解决方案解决异构数据源互访的传统方法是两种异构数据源间建立起互相转化的模式,见图1(DB 1,DB 2,DB3,DB4为数据源;箭头为转化模式)。
为解决4个异构数据源间的互访,必须建立起12种访问模式。
所以,对于N 个异构数据源,为了实现他们的互访就需要建立的转化模式总和为:T =N (N -1),相应的交互复杂度为:O(N 2)。
如果采用传统的解决方案实现异构数据源互访会给实现带来极大的不便。
在两个异构数据源建立起两种访问模式,才能实现它们的互访,这使互访系统表现出较大的复杂性,不便于灵活的访问。
每次在互访系统中加入一个新的数据源,必须为这个新数据源建立起与已有数据源的多种访问模式,这无疑又降低了系统的可扩展性。
图1 异构数据源互相转化模式1.2 直接导入与导出方案直接导入、导出的方法是利用数据库管理工具通过图形界面进行的直接操作。
比如,使用SQL Server 2000数据库,导入数据是指从SQL Server 的外部数据源检索数据,并将数据插入到SQL Server 表的过程。
而导出数据是将SQL Serv er 实例中的数据析取为某用户指定格式的过程。
SQL Server 2000提供了一个数据导入与数据导出工具(或者是利用企业管理器),这是一个向导程序,利用这个向导工具,可以将桌面数据库系统(如Access 和F ox -・80・X收稿日期:2011-11-28作者简介:张斌,男,内蒙古呼和浩特人,现工作于内蒙古医学院;刘彦军,男,内蒙古呼和浩特人,现工作于内蒙古财经学院;张凤英,女,内蒙古呼和浩特人,现工作于和林格尔县高级中学;侯峰,男,内蒙古呼和浩特人,现工作于内蒙古医学院(通讯作者)。
张斌,等・利用JavaBeans 实现两种数据库间数据导入的一种方法2012年第1期Pro 等)中的数据导入SQL Server 数据库,也可以将SQL Server 数据库中的数据导出到其他数据文件(如Access 的.MDB 文件),此外,还可以完成其他类型的迁移和转换任务。
所以,利用这种方案也可以实现不同数据源之间的互访,只不过每次导入导出都必须手工操作,这样给系统管理人员加大了工作量。
另外,这样的手工操作需要重复很多次并且需要一直保持下去,这样做太麻烦、太繁琐。
1.3 利用JDBC 技术、ODBC 技术的解决方案ODBC 、JDBC 这种开放式的连接技术是异构数据库信息集成中的关键技术。
所以,在“教务管理信息系统”中我们使用JDBC ——ODBC 桥(JDBC ——ODBC Bridge )的方法,这种方法利用JDBC ——ODBC 桥驱动程序,把标准JDBC 的调用转换为ODBC 的调用,并借助于操作系统把它发送到ODBC源,见图2。
图2 JDBC ——O DBC 解决方案通过ODBC 数据源的桥访问数据库并不是最好的解决方案。
理由是:¹利用JDBC 访问ODBC 数据源是一种效率低下并且使用范围有限的解决方案。
使用这种解决方案时,不仅系统必须传递通过多个层次的数据库调用,而且它将JDBC 代码的功能限制在驱动程序能够处理的范围之内;ºODBC 不容易使用,即使简单的查询亦得使用复杂的选项;»使用ODBC 时必须每台用户端电脑都要安装驱动程序管理器,另外再安装JDBC 驱动程序。
因为ODBC 是M icrosof t 公司提供的,所以,在安装Window s 操作系统的电脑可以使用ODBC ,但如果改变了操作系统(比如L inux 操作系统)那么ODBC 就不能正常使用。
1.4 直接利用JDBC 技术以及第三方提供的驱动程序直接利用JDBC 技术以及第三方提供的驱动程序可以访问某些专用的数据源文件,比如访问.DBF 数据源文件时,可以使用JDBC ——ODBC Bridg e 访问,但是如果是利用JDBC ——ODBC Br idge 访问.DBF 数据源文件,会给系统带来很大不便,灵活性不强。
如果是利用JDBC 技术以及第三方提供的驱动程序来连接数据库,不存在环境的限制问题(比如跨平台的使用),因为JDBC 提供了Jav a 程序与多种数据库通信的途径,而不需要编写任何与平台有关的代码来实现这种通讯。
JDBC 抽象了各个数据库厂商的详细资料并且概括了大多数常见的数据库访问函数,所以,决定改变数据库时,可以保证代码不变而只需改变JDBC 驱动程序。
JDBC 驱动程序是由Java 虚拟机使用,它把通用JDBC 调用翻译成数据库能够理解的与厂商有关的数据库调用,这样就可以实现不同数据库间的互相访问。
这种访问模式见图3。
图3 直接利用JDBC 访问模式JDBC 驱动程序一般由数据库厂商提供,也可在Int ernet 找到第三方提供的驱动程序,比如访问.DBF 数据源文件就可以直接找到提供该类型的数据库源文件的驱动程序,如:AVEconnect JDBC 。
故这种解决方案和上面介绍的三种方案相比的优点是:灵活性强、易实现、使用范围广、不受环境的限制等。
下面以方案4介绍一下它的具体操作步骤(利用JAVABEANS 实现数据库间的访问):1.4.1 与数据库建立连接所有的JDBC 程序的第一步是与数据库建立连接。
1.4.1.1 加载驱动程序。
为了与特定的数据源相连,JDBC 必须加载相应的驱动程序,使用Class.f orNam e 方法显式加载一个驱动程序的格式如下:Class .f orNam e (“acs .jdbc .Driver ”)。
1.4.1.2 建立连接。
与某个数据源建立连接是用DriverM anager 类的g et Connect ion 方法。
例如:St ring url =“jdbc:at inav:machine name:7997”;Connect io n cn =null cn =DriverM anag er.g et Connection (ur l,“atinav ”,“acs ”);其中,url 指定连接的数据源,atinav 用户名,acs 密码1.4.2 查询与检索数据库可以通过创建St at em ent 对象来执行查询语句。
所用的方法是Connect ion 类的creat eSt at ement ()。
比如:St at em ent stm t =cn.createSt at ement ();在St at em ent 对象上,可以使用ex ecuteQuer y 方法来执行一个查询语句,并把检索的结果集返回给ResultSet 对象,比如:ResultSet rs;r s =stm t.execut eQuery (“select *fro mst udent ”)・81・ 总第251期 内蒙古科技与经济 此外,还可以用其他方法实现对数据库的其他操作,如:insert表示插入数据、update表示更新数据、delet e表示删除数据等。
以上讨论了不同数据库之间互相访问的解决方案以及利用JavaBeans实现数据库连接的具体操作。
下面结合具体的实例来介绍不同数据库间的互访问题。
2 实例应用JDBC技术与第三方提供的驱动程序通过JavaBeans的具体实现在笔者开发的“教务管理信息系统”中得到了具体的应用,该系统是在Window s 2000下研制开发的,当然还可以在LINU X或其他操作系统下运行。
2.1 问题的产生在教务管理系统中,学生的基本信息是该管理系统中最重要的信息,也是整个系统正常运行的基础。
所以,教务管理中的学籍管理自然也是非常重要的,它主要包括学号、姓名、年龄、年级、入学年份、家庭住址等。
在该管理部分要求把新生的基本信息导入到教务处的学生基本信息表中。
新生表的数据源文件采用的是.DBF格式,而教务处使用的数据库则是SQL server2000,由于数据源的种类和数据存储格式定义上存在差异,所以,要实现数据的导入就要实现数据源间的转化与互访。
为了解决以上问题,在学籍管理中笔者采用了JDBC技术与第三方提供的驱动程序的解决方案(也就是解决方案4)来实现数据的导入。