CN1567301A - 访问数据库的方法及装置 - Google Patents
访问数据库的方法及装置 Download PDFInfo
- Publication number
- CN1567301A CN1567301A CN 03137796 CN03137796A CN1567301A CN 1567301 A CN1567301 A CN 1567301A CN 03137796 CN03137796 CN 03137796 CN 03137796 A CN03137796 A CN 03137796A CN 1567301 A CN1567301 A CN 1567301A
- Authority
- CN
- China
- Prior art keywords
- database
- parameter
- accessing
- description
- description document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种访问数据库的方法及装置,所述方法包括以下步骤:a)建立数据库系统连接参数的描述文件;b)建立数据库系统访问操作的描述文件;c)读取所述数据库系统连接参数的描述文件,初始化数据库连接池;d)读取所述数据库系统访问操作的描述文件,初始化数据库访问操作对象;e)根据数据库访问请求,获取数据库访问操作对象,从所述的数据库连接池中获取有效连接,执行数据库访问并返回结果。所述装置包括描述模块、解析模块和处理模块。本发明通过描述数据库访问的连接参数及数据访问操作的参数,可减少冗余代码量,提高系统运行效率。另外,由于高层应用并不参与持久层调度,扩展性较好,有利用将来进一步的开发。
Description
技术领域
本发明涉及数据处理的技术,更具体的涉及实现数据库访问的方法及装置。
背景技术
随着社会的发展,大量的数据需要存储起来,对存储的数据,根据不同用户的需求可应用一定的数据处理方法进行处理,数据库是适应这种需求的一种技术,简单的说,数据库是数据以一种能够持久保存,并且可以被操作的方式来保存的数据集合。一个数据库系统由一个数据库和周围的环境,包括软件、操作系统、硬件和使用它的用户组成。为了使用户可以访问数据库,如用户需对数据库中的数据进行查询、添加、删除、修改等操作,现有技术是通过下面的方法实现数据库访问的:首先确定相应数据库的连接参数,如数据库名称、统一资源定位符(URL)及用户名称等;然后由获取的数据库连接参数建立与该数据库的连接;第三,则是根据数据库系统访问操作的需求封装SQL(结构化查询语言)语句,然后执行封装后的SQL语句,返回操作结果。但随着数据库的广泛应用,数据的存储、交换越来越频繁,特别是大型的数据库系统,用户数很多,每当需要新增加一种新的数据库访问操作时,都要重复编码实现上述的过程,由于大量代码的存在,以及数据库系统的庞大,使得管理维护数据库很困难,系统运行缓慢,工作效率极低,管理维护的开销很大。
综上,现有技术存在下面的缺点:
1、实现数据库访问时存在大量冗余代码,占用系统资源,使系统运行缓慢,效率很低。由于访问数据库都是按照获取数据库连接,封装SQL及执行SQL并返回访问结果的流程实现的,当访问数据库的访问操作的参数发生变化时,需要重新编码实现,这会产生大量的冗余代码,占用系统资源,使系统运行效率降低;
2、访问数据库不灵活,不安全。现有技术,数据库系统连接参数,一旦选定轻易不能改变,对于数据库访问的高层应用系统,如果数据库用户名和密码参数定义为常量,则高层应用系统的用户都使用同样的用户名和密码,这样并不安全,而如果定义为变量,则每次用户使用时都必须提供用户名和密码,很不灵活。
3、现有技术开发出的数据库系统不易扩展,不利用将来扩展新的应用。由于未来的数据库开发大多是应用面向对象和分层的技术实现,而现有技术实现数据库访问时,高层应用需要参与持久层(数据库)的资源(数据库连接)调度(这实际上应该是由访问层实现的),高层与持久层之间并不透明,扩展性不好,开发效率低。
发明内容
本发明的目的是提供一种数据库访问的方法及装置,应用该方法及装置可以大大减少冗余代码量,提高系统的运行效率。
为实现本发明的上述目的,本发明提供的一种访问数据库的方法,包括以下步骤:
a)建立数据库系统连接参数的描述文件,所述描述文件包括对多种数据库系统连接参数的描述;
b)建立数据库系统访问操作的描述文件,所述描述文件包括对数据库系统中访问操作数据的多个协议簇的描述;
c)读取所述数据库系统连接参数的描述文件,初始化数据库连接池;
d)读取所述数据库访问操作的描述文件,初始化数据库访问操作对象;
e)根据数据库访问请求,获取数据库访问操作对象,并从所述的数据库连接池中获取有效连接,执行数据库访问并返回结果。
优化的,所述的数据库系统连接参数及数据库系统访问操作的描述文件可用扩展标记语言(XML)建立。
其中,步骤c)包括以下步骤:
创建数据库连接池管理器,从所述数据库系统连接参数的描述文件读取数据库系统类型标识;
根据所述的数据库系统类型标识,创建该类型数据库系统的连接池;
使用从所述数据库系统连接参数的描述文件中获取的数据库驱动程序标签值创建一个数据库连接驱动器实例,调用该数据库连接驱动器实例获取数据库系统连接的方法,将定义在所述数据库系统连接参数的描述文件中的数据库名称、统一资源定位符、密码标签中的值作为连接参数传入以创建指定数据库的连接;
以创建的连接作为一个有效、空余连接加入连接池,并以数据库系统连接参数的描述文件中描述的数据库名称为索引,将该连接池加入连接池管理器中。
其中,步骤d)包括下述步骤:
创建数据库访问操作仓库;
创建存放某数据库所有访问操作的容器;
初始化数据库访问操作对象实例;
以所述数据库系统访问操作的描述文件中描述的命令码为索引,将数据库访问操作对象加入容器;
以所述数据库系统访问操作描述文件中描述的数据库名称为索引,将所述容器加入数据库访问操作仓库。
其中,步骤e)包括以下步骤:
从接收到的数据库访问请求中提取出查询协议的命令码及条件参数;
在数据库访问操作仓库中查找该命令码对应的数据库访问操作对象;如查找到该命令码对应的数据库访问操作对象,则从中提取出条件前串、条件数组和条件后串信息,并与条件参数一起封装SQL语句,如没有查到,则抛出数据库访问操作异常,结束操作;
封装完SQL语句后,从连接池得到可用连接,执行封装后的SQL语句,并返回结果。
根据本发明的另一方面,一种实现数据库访问的装置,用于处理数据库访问请求,该装置包括:
描述模块,用于建立数据库系统连接参数的描述文件和数据库系统访问操作的描述文件;
第一解析模块,用于读取上述描述模块建立的数据库系统连接参数的描述文件,解析出初始化数据库连接池所需的连接参数;
第二解析模块,用于读取上述描述模块建立的数据库系统访问操作的描述文件,解析出初始化数据库访问操作对象所需的操作协议;
处理模块,用于根据数据库访问请求,得到数据库访问操作对象,从所述的数据库连接池中获取有效连接,执行数据库访问并返回结果。
具体的,所述处理模块进一步包括以下模块:
提取模块,用于从接收到的数据库访问请求中提取出查询协议的命令码;
查找模块,用于根据提取模块提取出的命令码在数据库访问操作仓库中查找该命令码对应的数据库访问操作对象;
封装模块,用于将查找模块查找到的数据库库访问操作对象封装的操作元素和条件参数一起封装SQL语句,所述操作元素包括条件前串、条件数组、条件后串信息;
执行模块,用于从连接池得到可用连接,执行封装模块封装后的SQL语句,并返回结果。
与现有技术相比,本发明具有下面的优点:
1、减少冗余代码量,提高系统运行效率。由于本发明中通过描述数据库访问操作的参数,当数据库操作类型或操作参数发生变化时,只需在数据库系统访问操作的描述文件中修改相应的参数,而不需重新编码实现,由于不需修改代码,可避免重新编译、重新部署目标代码的过程,使系统稳定性大为提高,另外冗余代码量的减少,降低了系统资源的占用,可使系统运行效率提高;
2、访问数据库更灵活、更安全。本发明中在数据库系统连接参数的描述文件中描述数据库访问所需的连接参数,对高层数据库应用系统的用户只需在安装时指定一次数据库用户名和密码,对不同的安装可以使用不同的用户名和密码,较现有技术更加灵活,安全。
3、数据库系统扩展性较好,有利用将来进一步的开发。本发明中高层应用只需将条件参数和命令码传入,剩余的所有工作(获取数据库连接、封装SQL、返回结果、释放数据库连接)都由本发明实现的
访问层完成,高层不需参与持久层的资源调度(数据库连接),各层之间完全透明,扩展性较好。
附图说明
图1是本发明访问数据库的流程图;
图2是本发明建立数据库系统连接参数的描述文件的XML schema结构;
图3是本发明建立数据库访问操作的描述文件的XML schema结构;
图4是本发明初始化数据库连接池的流程图;
图5是本发明初始化数据库访问操作对象的流程图;
图6是本发明处理高层数据库访问请求的流程图;
图7是本发明数据库访问服务装置的组成结构图;
图8是图7中处理模块的详细组成结构图;
图9是图7本发明数据库访问服务装置与高层应用系统结合实现数据库访问的示意图。
具体实施方式
下面结合附图以具体的实施方式进一步说明本发明的方法及装置,以便本领域的技术人员更好的理解本发明是如何基于描述实现数据库访问的。
由于现有技术在实现数据库访问时包含相同的流程,可将这种流程固定下来,同时将数据库访问中变化最频繁的连接参数和访问操作的参数从处理流程中分离出来,本发明正是应用这种方法实现数据库访问的,应用这种方法可以大大减少冗余代码量,提高高层应用系统的灵活性及安全性及将来的应用扩展。请看图1所示,本发明访问数据
库的方法包括以下步骤:
步骤101建立数据库系统连接参数的描述文件,所述描述文件包括对多种数据库系统连接参数的描述。在现实环境中,常需要将基于不同类型数据库的应用集成在一起。如果高层应用系统本身不能支持数据库级的集成,那么需要将其中一个数据库的数据导入另一个库中,但这又带来了数据同步问题,通过描述数据库连接参数后,可以直接实现数据库级的应用集成,应用处理逻辑和数据库访问层都不用改动,只需融合前端界面部分即可,省时省力。另外,现有技术将数据库系统连接参数定义在程序中,会导致下面的结果:首先,如果数据库用户名和密码参数在程序中定义成常量,那么所有使用本高层应用系统的用户都使用了同样的数据库用户名和密码,这样并不安全;其次,如果数据库用户名和密码参数在程序中定义成变量,那么高层应用系统的用户在每次使用时,都必须提供数据库用户名和密码,很不方便。所以,如果将数据库系统连接参数定义在描述文件中,那么用户只需在高层应用安装时指定一次数据库用户名和密码,且不同的安装可以使用不同的用户名和密码。
步骤102建立数据库系统访问操作的描述文件,所述描述文件包括对数据库系统中访问操作数据的多个协议簇的描述。上述步骤101建立了数据库系统连接参数的描述文件,由于数据库访问处理流程中变化的除了数据库系统连接参数外,还有访问操作数据的参数,对于不同的操作类型、操作需求,操作数据的SQL语句也是变化的。本步骤中对数据库系统访问操作的协议簇进行描述,当访问操作数据的参数变化时,例如新增加数据库访问操作,则只需在描述文件中添加新的协议簇描述即可,而不需像现有技术那样重新编码实现,即实现零编
码的数据库访问。
步骤103读取所述数据库系统连接参数的描述文件,初始化数据库连接池。连接池是对一组数据库连接的维护以使其可为应用程序服务器上的应用程序重用,上述步骤建立访问数据库必须的连接参数和访问操作的协议簇的描述文件,本步骤只需读取数据库系统连接参数的描述文件,从中获取所需的连接参数,建立与数据库的连接,并加入连接池中,以便有数据库访问请求时可从连接池中获得可用连接。
步骤104读取所述数据库访问操作的描述文件,初始化数据库访问操作对象。建立了数据库连接池,还需要根据所述数据库访问操作的描述文件,初始化数据库访问操作对象。
步骤105根据数据库访问请求,获取数据库访问操作对象,并从所述的数据库连接池中获取有效连接,执行数据库访问并向上层返回访问操作结果。
下面进一步具体叙述步骤101如何对数据库系统连接参数进行描述,这里采用XML(扩展标记语言)进行描述,首先建立数据库系统连接参数的XML schema结构,然后在数据库访问时,按照所述的结构进行具体的描述,请看图2所示的本发明建立数据库系统连接参数的描述文件的XML schema结构,包括如下的定义:
1)多数据库系统定义(DB Definations)包含多种数据库(DBGroup)定义。
2)数据库系统定义包含对数据库系统类型标识(DB)和数据库系统中所有数据库(Devices)的定义。
3)对数据库系统类型标识的定义包括:数据库类型名(Type)和数据库驱动程序(Driver)。
4)对数据库系统中具体某一数据库(Device)的定义包括:
数据库名称(Name):定义数据库标识符
统一资源定位符(URL):定义连接数据库的URL
用户名(User):定义数据库有效的用户名
密码(Password):定义用户名对应的密码,为可选项,密文存储。
上述连接参数中,用户名及密码是可选的,可根据实际情况进行选择,在具体访问数据库时,只需根据相应的数据库系统类型,选择相应的连接参数进行描述,当连接参数发生变化时,只需修改相应的描述文件即可。
继续叙述本发明的方法,步骤102需要建立数据库访问操作的描述文件,这里同样采用XML进行描述,请看图3所示的本发明建立数据库系统访问操作的描述文件的XML schema结构,包括下面的定义:
1)数据库访问操作定义(DBAccessDefinations)包含多个协议簇(DBAccessDefination)定义。
2)协议簇定义包含对数据库(Device)和与该数据库相关的所有数据库访问操作(Protocols)的定义。
3)对具体某一条协议(Protocol)的定义信息包括:
命令码(CommandCode):定义数据库访问操作的命令字,是数据库访问操作的唯一确定标识。
条件前串(PreCondition):定义SQL语句的关键字(Select,Insert),表名(from)和多表关联条件。
条件数组(ConditionArray):定义Where条件对应的字段名和关系运算符,是可选的。
条件后串(PostCondition):定义附加条件,如order子句等。
具体要实现某一数据库的访问操作时,只需按照上述定义的结构进行描述,建立描述文件,而其余的操作,如封装并执行SQL语句,返回执行结果的步骤则可编码固化。由于数据库访问操作的SQL参数是在描述文件中描述的,当数据库访问的操作类型或操作参数发生变化时,只需在描述文件中修改相应的描述,如条件前串、条件数组或条件后串等,由于数据库访问操作最容易变化的访问操作参数与访问处理流程分离开,访问操作的参数变化时,并不需要重新编码,可节省大量的代码,而且由于不需修改代码,进一步不需重新编译、重新部署目标代码的过程,使维护开销最小,可降低系统资源的占用,使系统稳定性大为提高。
下面结合上述的数据库连接参数及数据库访问操作的XMLschema结构进一步说明本发明访问数据库的方法,具体实施时根据上述XML schema结构,选择相应的数据库连接参数进行描述以建立数据库系统连接参数的描述文件,选择数据库访问操作涉及的参数进行描述以建立数据库访问操作的描述文件,下面来看步骤103初始化数据库连接池的流程,请看图4所示,初始化数据库连接池包括下面的步骤:
步骤401创建数据库连接池管理器,从所述数据库系统连接参数的描述文件中读取数据库系统类型标识;
步骤402根据所述的数据库系统类型标识,创建该类型数据库系统的连接池;
步骤403使用数据库系统连接参数的描述文件中描述的数据库驱动程序标签值创建一个数据库连接驱动器实例;
步骤404调用该数据库连接驱动器实例获取数据库系统连接的方
法,将定义在数据库系统连接参数的描述文件中的数据库名称、统一资源定位符、密码标签中的值作为连接参数传入以创建指定数据库的连接;
步骤405以创建的连接作为一个有效、空余连接加入连接池;
步骤406以数据库系统连接参数的描述文件中描述的数据库名称为索引,将该连接池加入连接池管理器中。
进一步叙述本发明的方法,上述根据数据库系统连接参数的描述文件,获取了创建数据库连接池所需的连接参数,并初始化数据库连接池,步骤102则建立了数据库系统访问操作的描述文件,下面来看初始化数据库访问操作对象的过程,图5是本发明中初始化数据库访问操作对象的流程,具体的包括以下步骤:
步骤501创建数据库访问操作仓库,所述的访问操作仓库是一个二级索引结构,可以是hash表,或者其他的向量结构;
步骤502创建存放某数据库所有访问操作的容器;
步骤503获取数据库系统访问操作的描述文件中描述的数据库访问的协议簇描述,初始化数据库访问操作对象实例,以便有数据库访问请求时获得所需的方法;
步骤504以数据库系统访问操作的描述文件中描述的命令码为索引,将数据库访问操作对象加入容器;
步骤505进一步以数据库系统访问操作的描述文件描述的数据库名称为索引,将所述容器加入数据访问操作仓库。
上述步骤501所述的数据库访问操作仓库为二级索引结构,该二级索引结构的第一级索引表示多个数据库,以数据库访问操作的描述文件中描述的数据库名称为索引,定义在该数据库上的所有访问数据
库操作集作为索引内容;第二级索引表示定义在一个数据库上的多个数据库操作集,以数据库系统访问操作的描述文件描述的命令码为索引,封装所有操作元素的数据库访问操作对象作为索引内容,所述的操作元素包括条件前串、条件数组和条件后串。
执行完上述步骤,就可以处理数据库访问的请求了,请看图6所示处理高层数据库访问请求的流程图,包括下面的步骤:
步骤601接收高层应用系统的数据库访问请求;
步骤602从所述接收到的数据库访问请求中提取出查询协议的命令码及条件参数;
步骤603在数据库访问操作仓库中查找该命令码对应的数据库访问操作对象是否存在,如查找到该命令码对应的数据库访问操作对象,则执行步骤604获取该命令码对应的数据库访问操作对象,从中提取出条件前串、条件数组和条件后串信息,以
条件前串+条件数组+条件参数+条件后串
的方式封装SQL语句,没有查找到该命令码对应的数据库访问操作对象,则抛出数据库访问操作异常,结束操作;
步骤605封装完SQL语句后,需要向数据库连接池管理器申请一个有效的、空余连接,如果碰巧数据库连接池中的连接都被占用,则需要判断一下当前连接池中的连接数是否已达到最大上限,如果达到,则需要等待一会,重新提申请,否则连接池管理器会直接创建一个新连接;
步骤606得到可用连接,执行封装的SQL语句,并将结果返回给高层应用,从而完成一次完整的数据库访问处理流程。
上述数据库访问处理的流程,高层应用只需传入命令码和条件参
数,剩余的所有工作(获取数据库连接、封装SQL、返回结果、释放数据库连接)都由访问层完成。高层并不用关心持久层的资源调度等,即高层和持久层之间是透明的,由于面向对象及分层技术的广泛应用,本发明开发的数据库系统扩展性极好,可提高开发的效率,节省开发的成本。
更好的说明本发明的方法,下面以增加一种新的数据库访问操作为例说明本发明的方法,这里先假设网管数据库nmsDB中包含一日志信息表syslogTable,表定义如下:
create table syslogTable ( StartTime datetime not null,/*起始时间,接收到日志报文的时间*/ DevType int not null, /*发送日志报文设备的类型*/ Facility int not null, /*日志来源*/ Severity int not null, /*日志级别*/ IPAddr varchar(16)not null, /*发送UDP报文的设备IP地址*/ Mnenonic varchar(32)null, /*助记符*/ )
现在,我们需要基于该表添加一种新的数据库访问操作——返回日志起始时间(StartTime)处于用户输入的时间段内的所有日志信息。要使用本发明完成该功能,包括如下步骤:
1.向数据库访问操作描述文件中添加如下的一段文字,即可完成从数据库获取满足条件的数据源
<!--sysloy querying report by time range--> <协议> <命令码>523</命令码> <条件前串>select syslogTable.IP Addr,syslogTable.StartTime, syslogTable.Severity,syslogTable.Mnenonic, <!-- SIPO <DP n="13"> --> <dp n="d13"/> syslogTable.Facility,syslogTable.DevType from slaVrp30Tab</条件前串> <条件数组> <条件>syslogTable.StartTime>=</条件> <条件>syslogTable.StartTime<=</条件> </条件数组> </协议>
2.高层应用定制一个显示界面,可以是JSP的,将封装的查询结果显示出来。
上述增加一种新的数据库访问操作并不需要重新编码实现,而只是针对这种数据库访问操作所需的SQL语句在描述文件中添加新的协议描述。如上述定义了命令码为523,在条件前串中定义了关键词select及from(表名),然后条件数组中定义了数据库操作的若干条件(item),这里条件数组定义了起始时间(StartTime)处于用户输入的时间段内,实际上按照不同的需要还可以添加新的条件,或者以条件后串的形式增加新的附加条件,由于数据库访问操作的参数是在描述文件中定义的,并不需要重新编码实现,也即对数据库访问的流程编码固化,在新增加数据库访问操作时,涉及的只是数据库访问操作的参数发生变化,在描述文件中添加新的描述文件即可。现有技术一旦访问操作的参数发生变化,就需要重新编码,这种重复编码形成大量的冗余代码,而且耗费多余的系统资源及人力成本,而本发明中,只需添加描述文件,并不需要重新编码。如上述的,在描述文件添加如上的描述,在数据库访问时,读取所述的描述文件,初始化访问操作对象后,高层应用只需传入执行数据库访问操作的参数,如对这个新增加的数据库访问操作,高层应用输入访问操作的命令码和条件参数即可,如果用户需要的是2000年5月1日9点到12点这个时间段的系统日志信息,
则输入命令码523和起始时间(StartTime)的条件参数:syslogTable.StartTime>=2000年5月1日9点;syslogTable.StartTime<=2000年5月1日12点,高层应用将上述的命令码和条件参数传入,其余的数据库访问操作流程:获取数据库的连接,SQL参数的封装及返回访问结果则编码固化,这样,可减少大量的冗余代码,且提高了开发的效率。
进一步阐述本发明,请参看图7所示的本发明数据库访问服务装置的组成结构图,所述数据库访问服务装置用于处理高层应用的数据库访问请求,该装置包括以下组成模块:
描述模块701,用于建立数据库系统连接参数的描述文件和数据库系统访问操作的描述文件;
第一解析模块702,用于读取上述描述模块建立的数据库系统连接参数的描述文件,解析出初始化数据库连接池所需的连接参数;
第二解析模块703,用于读取上述描述模块建立的数据库系统访问操作的描述文件,解析出初始化数据库访问操作对象所需的操作协议;
处理模块704,用于根据数据库访问请求,得到数据库访问操作对象,并从所述的数据库连接池中获取有效连接,执行数据库访问并返回结果。
参考图8所示,所述处理模块704进一步包括以下模块:
提取模块801,用于从接收到的数据库访问请求中提取出查询协议的命令码;
查找模块802,用于根据提取模块801提取出的命令码查找数据库访问操作仓库中该命令码对应的数据库访问操作对象;
封装模块803,用于将查找模块802查找到的数据库访问操作对象中封装的操作元素和条件参数一起封装SQL语句,所述操作元素包括
条件前串、条件数组、条件后串信息;
执行模块804,用于从连接池得到可用连接,执行封装模块803封装后的SQL语句,并向上层返回SQL操作结果。
下面参考图7和图8具体说明本发明的数据库访问服务装置的工作原理,本发明的数据库访问服务装置主要实现访问层的功能,即完成高层应用和持久层之间数据库连接等数据库访问的功能,具体的,所述的描述模块701可采用XML的编辑器实现。工作时,所述数据库访问服务装置通过所述的描述模块701建立数据库系统连接参数及数据库系统访问操作的描述文件,然后通过第一解析模块702读取所述描述模块建立的数据库系统连接参数的描述文件,解析出初始化数据库连接池所需的连接参数,然后应用这些连接参数执行初始化数据库系统连接池,以便创建指定数据库的连接。然后第二解析模块703继续读取数据库系统访问操作的描述文件,解析出初始化数据库访问操作对象所需的协议簇描述,根据所述的协议簇描述,创建数据库访问操作仓库,初始化数据库访问操作对象,然后由处理模块704进行处理,所述处理模块704在具体处理数据库访问时,首先接收高层应用的数据库访问请求,由提取模块801从所述接收到的数据库访问请求中提取出查询协议的命令码和条件参数并交给查找模块;所述查找模块802,在数据库访问操作仓库中查找该命令码对应的数据库访问操作对象,如查找到所述的数据库访问操作对象,则将所述的数据库访问操作对象和条件参数交给封装模块进行封装,如没有查找到,则提示用户数据库访问操作异常,结束操作,而封装模块803,则将数据库访问操作对象中封装的操作元素——条件前串、条件数组、条件后串信息和条件参数一起封装SQL语句;最后由执行模块804,从连接池得到可用连接,执行封装模块803封装后的SQL语句,并返回结果。
参看图9所示的本发明数据库访问服务装置与高层应用系统结合实现数据库访问的示意图。高层应用系统只需传入命令码和条件参数,
其余剩余的访问数据库的工作都由本发明的数据库访问服务装置完成。本发明的数据库访问服务装置由可变的数据库系统连接参数和数据库访问操作的描述文件和编码固化的数据库访问处理流程模块组成,在数据库连接参数及数据库系统访问操作的参数发生变化时,只需修改相应的描述文件即可,不用重新编码,而高层并不需参与持久层的资源调度,即获取数据库连接,封装SQL语句以及执行封装后的SQL语句并返回结果的流程都由本发明数据库访问服务装置实现,也即本发明的数据库访问服务装置实现了访问层的功能,由于高层、访问层及持久层等各层次之间彼此透明,扩展性较好,有利于将来的进一步开发应用。
以上所述,仅为本发明的优选实施例而已,非因此即局限本发明的权利范围,例如对数据库系统连接参数和数据库访问操作的参数的描述还可用其他的描述语言如HTML,或者自定义的描述语言等进行描述,因此,在不脱离本发明的实质和范围的情况下,凡运用本发明说明书及附图内容所为的等效变化,均理同包含于本发明的权利要求范围内。
Claims (14)
1、一种访问数据库的方法,其特征在于,该方法包括以下步骤:
a)建立数据库系统连接参数的描述文件,所述描述文件包括对多种数据库系统连接参数的描述;
b)建立数据库系统访问操作的描述文件,所述描述文件包括对数据库系统中访问操作数据的多个协议簇的描述;
c)读取所述数据库系统连接参数的描述文件,初始化数据库连接池;
d)读取所述数据库系统访问操作的描述文件,初始化数据库访问操作对象;
e)根据数据库访问请求,获取数据库访问操作对象,并从所述的数据库连接池中获取有效连接,执行数据库访问并返回结果。
2、根据权利要求1所述的访问数据库的方法,其特征在于,步骤a)所述对多种数据库系统连接参数的描述包括对数据库系统类型标识和数据库系统中所有数据库的描述。
3、根据权利要求2所述的访问数据库的方法,其特征在于,所述对数据库系统类型标识的描述包括对以下信息的描述:数据库系统类型名和数据库驱动程序。
4、根据权利要求2所述的访问数据库的方法,其特征在于,对数据库系统中数据库的描述包括对以下信息的描述:数据库名称、统一资源定位符、用户名和密码。
5、根据权利要求1所述的访问数据库的方法,其特征在于,步骤b)所述对数据库系统中访问操作数据的协议簇的描述包括对以下信息的描述:数据库名称和与该数据库相关的所有数据库访问操作的协议。
6、根据权利要求5所述的访问数据库的方法,其特征在于,所述对数据库相关的所有数据库访问操作的协议的描述包括对以下信息的描述:命令码、条件前串,所述命令码定义数据库访问操作的命令字,所述条件前串定义SQL语句的关键字、表名及多表关联条件。
7、根据权利要求6所述的访问数据库的方法,其特征在于,所述对数据库相关的所有数据库访问操作的协议的描述还包括对以下信息的描述:条件数组、条件后串,所述所述条件数组定义SQL语句中where条件对应的字段名和关系运算符,所述条件后串定义附加的条件。
8、根据权利要求1至7任一项所述的访问数据库的方法,其特征在于所述的描述文件采用扩展标记语言(XML)建立。
9、根据权利要求8所述的访问数据库的方法,其特征在于,步骤c)包括以下步骤:
创建数据库连接池管理器,从所述数据库系统连接参数的描述文件读取数据库系统类型标识;
根据所述的数据库系统类型标识,创建该类型数据库系统的连接池;
使用从所述数据库系统连接参数的描述文件获取的数据库驱动程序标签值创建一个数据库连接驱动器实例,调用该实例获取数据库系统连接的方法,将所述数据库系统连接参数的描述文件中描述的数据库名称、统一资源定位符、密码标签中的值作为连接参数传入以创建指定数据库的连接;
以创建的连接作为一个有效、空余连接加入连接池,并以数据库系统连接参数的描述文件中描述的数据库名称为索引,将该连接池加入连接池管理器中。
10、根据权利要求9所述的访问数据库的方法,其特征在于,步骤d)包括下述步骤:
创建数据库访问操作仓库;
创建存放数据库所有访问操作的容器;
初始化数据库访问操作对象实例;
以所述数据库系统访问操作的描述文件中描述的命令码为索引,将所述访问操作的描述文件中描述的数据库访问操作对象加入容器;
以所述数据系统访问操作的描述文件中描述的数据库名称为索引,将所述容器加入数据库访问操作仓库。
11、根据权利要求10所述的访问数据库的方法,其特征在于,所述的数据库访问操作仓库是二级索引结构,该二级索引结构的第一级索引表示多个数据库,以所述数据库访问操作描述文件中描述的数据库名称为索引,定义在该数据库上的所有数据库访问操作集作为索引内容;第二级索引表示定义在一个数据库上的多个数据库访问操作集,以所述数据库访问操作描述文件中描述的命令码为索引,封装所有访问操作元素的数据库访问对象作为索引内容,所述的访问操作元素包括条件前串、条件数组和条件后串。
12、根据权利要求11所述的访问数据库的方法,其特征在于,步骤e)包括以下步骤:
从接收到的数据库访问请求中提取出查询协议的命令码及条件参数;
在数据库访问操作仓库中查找该命令码对应的数据库访问操作对象,如查找到该命令码对应的数据库访问操作对象,则从中提取出条件前串、条件数组和条件后串信息,并与条件参数一起封装SQL语句,
如没有查找到,则抛出数据库访问操作异常,结束操作;
从连接池得到可用连接,执行封装后的SQL语句,并返回结果。
13、一种访问数据库的装置,用于处理数据库访问请求,其特征在于,该装置包括:
描述模块,用于建立数据库系统连接参数的描述文件和数据库系统访问操作的描述文件;
第一解析模块,用于读取上述描述模块建立的数据库系统连接参数的描述文件,解析出初始化数据库连接池所需的连接参数;
第二解析模块,用于读取上述描述模块建立的数据库系统访问操作的描述文件,解析出初始化数据库访问操作对象所需的操作协议;
处理模块,用于根据数据库访问请求,获取数据库访问操作对象,并从所述数据库连接池中获取有效连接,执行数据库访问并返回结果。
14、根据权利要求13所述的访问数据库的装置,其特征在于:所述处理模块进一步包括以下模块:
提取模块,用于从接收到的数据库访问请求中提取出查询协议的命令码;
查找模块,用于根据提取模块提取出的命令码查找数据库访问操作仓库中该命令码对应的数据库访问操作对象;
封装模块,用于将查找模块查找到的数据库访问操作对象中封装的操作元素和条件参数一起封装SQL语句,所述操作元素包括条件前串、条件数组、条件后串信息;
执行模块,用于从连接池得到可用连接,执行封装模块封装后的SQL语句,并返回结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031377963A CN100337235C (zh) | 2003-06-23 | 2003-06-23 | 访问数据库的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031377963A CN100337235C (zh) | 2003-06-23 | 2003-06-23 | 访问数据库的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1567301A true CN1567301A (zh) | 2005-01-19 |
CN100337235C CN100337235C (zh) | 2007-09-12 |
Family
ID=34470552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031377963A Expired - Fee Related CN100337235C (zh) | 2003-06-23 | 2003-06-23 | 访问数据库的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100337235C (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395710C (zh) * | 2005-05-27 | 2008-06-18 | 华为技术有限公司 | 一种多线程应用程序访问数据库的方法 |
CN100458790C (zh) * | 2006-12-31 | 2009-02-04 | 中国建设银行股份有限公司 | 访问数据库的方法和系统 |
CN101840352A (zh) * | 2010-04-29 | 2010-09-22 | 中兴通讯股份有限公司 | 一种数据库连接池的监控方法及装置 |
CN102314375A (zh) * | 2011-03-18 | 2012-01-11 | 北京神州数码思特奇信息技术股份有限公司 | 一种异构数据库存储统一接口和数据库访问方法 |
CN103514185A (zh) * | 2012-06-20 | 2014-01-15 | 北京四维图新科技股份有限公司 | 导航地图多个更新区域的数据库文件访问管理方法及装置 |
CN103761102A (zh) * | 2014-01-26 | 2014-04-30 | 中国联合网络通信集团有限公司 | 一种统一数据服务平台及其实现方法 |
CN103902565A (zh) * | 2012-12-26 | 2014-07-02 | 阿里巴巴集团控股有限公司 | 一种数据访问关系的确定方法及装置 |
CN104408073A (zh) * | 2014-10-31 | 2015-03-11 | 广州华多网络科技有限公司 | 数据操作方法和装置 |
CN104598592A (zh) * | 2015-01-20 | 2015-05-06 | 北京仿真中心 | 一种基于xml的数据库自定义方法及系统 |
CN104636131A (zh) * | 2014-12-12 | 2015-05-20 | 北京奇虎科技有限公司 | 一种特殊指令的执行方法及装置 |
CN104915412A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 一种动态管理数据库连接的方法及系统 |
WO2015139202A1 (zh) * | 2014-03-18 | 2015-09-24 | 华为技术有限公司 | 一种处理数据的方法、装置和系统 |
CN105279197A (zh) * | 2014-07-24 | 2016-01-27 | 中国银联股份有限公司 | JavaEE应用服务器与数据库建立连接的方法和装置 |
CN106294498A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和设备 |
CN106406748A (zh) * | 2015-07-30 | 2017-02-15 | 伊姆西公司 | 存储器中心数据库架构 |
CN106446182A (zh) * | 2016-09-29 | 2017-02-22 | 贵州云众知乐教育科技有限公司 | 一种数据库引擎 |
CN106940695A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN107133267A (zh) * | 2017-04-01 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
CN107408128A (zh) * | 2015-04-20 | 2017-11-28 | 甲骨文国际公司 | 用于使用高速缓存和碎片拓扑提供对分片数据库的访问的系统和方法 |
CN108108439A (zh) * | 2017-12-21 | 2018-06-01 | 北京奇艺世纪科技有限公司 | 一种数据查询方法、装置及电子设备 |
CN108228597A (zh) * | 2016-12-14 | 2018-06-29 | 深圳市优朋普乐传媒发展有限公司 | 数据库访问方法和装置 |
CN108959496A (zh) * | 2018-06-26 | 2018-12-07 | 南京汇银迅信息技术有限公司 | 基于动态代理的跨数据库访问方法及抽象数据访问方法 |
CN109062954A (zh) * | 2018-06-23 | 2018-12-21 | 上海泽阳智能科技有限公司 | 一种高效的数据交换和数据源隔离系统 |
CN109241037A (zh) * | 2018-08-28 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种实现数据库处理的方法、装置、设备及存储介质 |
CN110633291A (zh) * | 2019-07-26 | 2019-12-31 | 深圳市元征科技股份有限公司 | 一种数据库访问方法、装置及电子设备 |
CN110781234A (zh) * | 2019-10-24 | 2020-02-11 | 北京锐安科技有限公司 | Trs数据库的检索方法、装置、设备及存储介质 |
CN112487075A (zh) * | 2020-12-29 | 2021-03-12 | 中科院计算技术研究所大数据研究院 | 一种集成关系型和非关系型数据库数据转换的算子 |
CN116244361A (zh) * | 2022-12-23 | 2023-06-09 | 北京柏睿数据技术股份有限公司 | 一种数据库连接动态持久化处理的方法及系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810406B (zh) * | 2012-11-13 | 2018-01-23 | 库柏资讯软体股份有限公司 | 关联式数据库的信息安全强化方法 |
TWI510938B (zh) * | 2012-11-23 | 2015-12-01 | Cobrasonic Software Inc | 藉由異動日誌檔識別資料庫異動之方法以及資料庫系統 |
CN104615637A (zh) * | 2014-11-20 | 2015-05-13 | 广州杰赛互教通信息技术有限公司 | 数据交换方法及数据交换中间装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2813132B1 (fr) * | 2000-08-16 | 2003-01-31 | Marc Vogel | Systeme d'interface d'acces aux donnees d'une base de donnees |
CN1351299A (zh) * | 2000-10-28 | 2002-05-29 | 深圳市中兴通讯股份有限公司 | 一种访问数据库的方法及装置 |
-
2003
- 2003-06-23 CN CNB031377963A patent/CN100337235C/zh not_active Expired - Fee Related
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395710C (zh) * | 2005-05-27 | 2008-06-18 | 华为技术有限公司 | 一种多线程应用程序访问数据库的方法 |
CN100458790C (zh) * | 2006-12-31 | 2009-02-04 | 中国建设银行股份有限公司 | 访问数据库的方法和系统 |
CN101840352B (zh) * | 2010-04-29 | 2014-09-10 | 中兴通讯股份有限公司 | 一种数据库连接池的监控方法及装置 |
CN101840352A (zh) * | 2010-04-29 | 2010-09-22 | 中兴通讯股份有限公司 | 一种数据库连接池的监控方法及装置 |
CN102314375A (zh) * | 2011-03-18 | 2012-01-11 | 北京神州数码思特奇信息技术股份有限公司 | 一种异构数据库存储统一接口和数据库访问方法 |
CN103514185A (zh) * | 2012-06-20 | 2014-01-15 | 北京四维图新科技股份有限公司 | 导航地图多个更新区域的数据库文件访问管理方法及装置 |
CN103514185B (zh) * | 2012-06-20 | 2017-09-29 | 北京四维图新科技股份有限公司 | 导航地图多个更新区域的数据库文件访问管理方法及装置 |
CN103902565A (zh) * | 2012-12-26 | 2014-07-02 | 阿里巴巴集团控股有限公司 | 一种数据访问关系的确定方法及装置 |
CN103902565B (zh) * | 2012-12-26 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种数据访问关系的确定方法及装置 |
CN103761102B (zh) * | 2014-01-26 | 2017-05-31 | 中国联合网络通信集团有限公司 | 一种统一数据服务平台及其实现方法 |
CN103761102A (zh) * | 2014-01-26 | 2014-04-30 | 中国联合网络通信集团有限公司 | 一种统一数据服务平台及其实现方法 |
WO2015139202A1 (zh) * | 2014-03-18 | 2015-09-24 | 华为技术有限公司 | 一种处理数据的方法、装置和系统 |
CN105279197A (zh) * | 2014-07-24 | 2016-01-27 | 中国银联股份有限公司 | JavaEE应用服务器与数据库建立连接的方法和装置 |
CN104408073A (zh) * | 2014-10-31 | 2015-03-11 | 广州华多网络科技有限公司 | 数据操作方法和装置 |
CN104408073B (zh) * | 2014-10-31 | 2017-10-20 | 广州华多网络科技有限公司 | 数据操作方法和装置 |
CN104636131A (zh) * | 2014-12-12 | 2015-05-20 | 北京奇虎科技有限公司 | 一种特殊指令的执行方法及装置 |
CN104636131B (zh) * | 2014-12-12 | 2018-07-27 | 北京奇虎科技有限公司 | 一种特殊指令的执行方法及装置 |
CN104598592A (zh) * | 2015-01-20 | 2015-05-06 | 北京仿真中心 | 一种基于xml的数据库自定义方法及系统 |
CN107408128B (zh) * | 2015-04-20 | 2020-12-08 | 甲骨文国际公司 | 用于使用高速缓存和碎片拓扑提供对分片数据库的访问的系统和方法 |
US11409721B2 (en) | 2015-04-20 | 2022-08-09 | Oracle International Corporation | System and method for providing access to a sharded database using a cache and a shard technology |
CN107408128A (zh) * | 2015-04-20 | 2017-11-28 | 甲骨文国际公司 | 用于使用高速缓存和碎片拓扑提供对分片数据库的访问的系统和方法 |
CN104915412B (zh) * | 2015-06-05 | 2018-07-03 | 北京京东尚科信息技术有限公司 | 一种动态管理数据库连接的方法及系统 |
CN104915412A (zh) * | 2015-06-05 | 2015-09-16 | 北京京东尚科信息技术有限公司 | 一种动态管理数据库连接的方法及系统 |
CN106294498A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和设备 |
CN106406748A (zh) * | 2015-07-30 | 2017-02-15 | 伊姆西公司 | 存储器中心数据库架构 |
CN106406748B (zh) * | 2015-07-30 | 2020-12-22 | 伊姆西公司 | 存储器中心数据库架构 |
CN106940695A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN106940695B (zh) * | 2016-01-05 | 2020-06-26 | 阿里巴巴集团控股有限公司 | 数据源信息的校验方法及装置 |
CN106446182A (zh) * | 2016-09-29 | 2017-02-22 | 贵州云众知乐教育科技有限公司 | 一种数据库引擎 |
CN108228597A (zh) * | 2016-12-14 | 2018-06-29 | 深圳市优朋普乐传媒发展有限公司 | 数据库访问方法和装置 |
CN107133267A (zh) * | 2017-04-01 | 2017-09-05 | 北京京东尚科信息技术有限公司 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
CN107133267B (zh) * | 2017-04-01 | 2021-01-26 | 北京京东尚科信息技术有限公司 | 查询elasticsearch集群的方法、装置、电子设备和可读存储介质 |
CN108108439A (zh) * | 2017-12-21 | 2018-06-01 | 北京奇艺世纪科技有限公司 | 一种数据查询方法、装置及电子设备 |
CN109062954A (zh) * | 2018-06-23 | 2018-12-21 | 上海泽阳智能科技有限公司 | 一种高效的数据交换和数据源隔离系统 |
CN108959496A (zh) * | 2018-06-26 | 2018-12-07 | 南京汇银迅信息技术有限公司 | 基于动态代理的跨数据库访问方法及抽象数据访问方法 |
CN109241037A (zh) * | 2018-08-28 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种实现数据库处理的方法、装置、设备及存储介质 |
CN110633291A (zh) * | 2019-07-26 | 2019-12-31 | 深圳市元征科技股份有限公司 | 一种数据库访问方法、装置及电子设备 |
CN110781234A (zh) * | 2019-10-24 | 2020-02-11 | 北京锐安科技有限公司 | Trs数据库的检索方法、装置、设备及存储介质 |
CN112487075B (zh) * | 2020-12-29 | 2021-08-31 | 中科院计算技术研究所大数据研究院 | 一种集成关系型和非关系型数据库数据转换算子的方法 |
CN112487075A (zh) * | 2020-12-29 | 2021-03-12 | 中科院计算技术研究所大数据研究院 | 一种集成关系型和非关系型数据库数据转换的算子 |
CN116244361A (zh) * | 2022-12-23 | 2023-06-09 | 北京柏睿数据技术股份有限公司 | 一种数据库连接动态持久化处理的方法及系统 |
CN116244361B (zh) * | 2022-12-23 | 2023-10-10 | 北京柏睿数据技术股份有限公司 | 一种数据库连接动态持久化处理的方法及系统 |
WO2024131032A1 (zh) * | 2022-12-23 | 2024-06-27 | 北京柏睿数据技术股份有限公司 | 一种数据库连接动态持久化处理的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100337235C (zh) | 2007-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100337235C (zh) | 访问数据库的方法及装置 | |
CN1146821C (zh) | 面向用户的数据库查询方法及系统 | |
CN1781105A (zh) | 在xml文档和关系数据之间的映射中保留层次信息 | |
CN1784680A (zh) | 搜索条件的逐渐放宽 | |
CN1713179A (zh) | 在对象模型中的影响分析 | |
CN1848774A (zh) | 一种远程调用通信组件的系统及方法 | |
CN1278231C (zh) | 将抽象句法表示法1数据模型化成对象模型的方法及系统 | |
CN1601526A (zh) | 用于在计算机网络内搜索的方法和设备 | |
CN1577322A (zh) | 管理数据处理系统中的应用文件的方法和装置 | |
CN1841362A (zh) | 用于处理电子表格的方法和系统 | |
CN101075320A (zh) | 信息发布、查询系统和方法 | |
CN1673972A (zh) | 数据库表更新的动态监控系统及方法 | |
CN1741460A (zh) | 一种电信网络通用性能管理的实现方法及系统 | |
CN101043381A (zh) | 服务网格溯源信息收集系统及方法 | |
CN1866283A (zh) | 实现规则系统触发的系统及方法 | |
CN1766876A (zh) | 用于管理结构化文件的系统和方法 | |
CN1825321A (zh) | 词典类数据的检索方法、保存方法及检索系统 | |
CN101060539A (zh) | 采用统一入口网站地址集成和推送多网站内容的方法及系统 | |
CN1825306A (zh) | 基于关系数据库的xml数据存储与访问方法 | |
CN1858732A (zh) | 一种数字家庭网络中的文件搜索系统及方法 | |
CN1245685C (zh) | 基于构件的操作系统动态设备驱动的方法 | |
CN1885266A (zh) | 用于协作处理的系统,设备及方法 | |
CN1809811A (zh) | 用于借助中心xml配置文件生成分布式java应用的方法和装置 | |
CN1298506A (zh) | 便于访问查询服务的方法和系统 | |
CN1328299A (zh) | 信息的收集与查询的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070912 Termination date: 20150623 |
|
EXPY | Termination of patent right or utility model |