一种对数据库进行访问的方法和装置制造方法及图纸

技术编号:6534557 阅读:255 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种对数据库进行访问的方法和装置,应用于包含多种类型的数据库模板的数据库访问装置。每种类型的数据库模板中包含该类型数据库的结构化查询语言(SQL)语句以及SQL语句对应的功能标识,数据库模板中具有相同功能的SQL语句对应相同的功能标识;数据库访问装置启动后,加载所有模板;接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集;在结果集中查询调用指令包含的功能标识对应的SQL语句,执行该SQL语句以实现对数据库的访问。本发明专利技术能够在调用方屏蔽数据库的类型差异,降低调用方操作的复杂度,并充分利用各个数据库特有的SQL语句。

【技术实现步骤摘要】

本专利技术涉及数据库技术,特别涉及一种对数据库进行访问的方法和装置
技术介绍
对数据库的访问通常采用执行结构化查询语言(SQL,Structured QueryLanguage)语句的方式,在此过程中系统将查询参数拼装在SQL语句中,然后执行该 SQL语句。通常系统往往要支持多种数据库,例如SQL Server与Oracle数据库等,在实现相同功能时,不同类型的数据库常常会用到不同的SQL语句。由于现有技术中,SQL语句是编写在代码中的,因此在实现对不同类型数据库某一相同功能的访问时,需要在调用方对数据库类型进行区分,也就是说,针对同一功能需要在方法上对不同数据库类型进行区分,调用方根据不同的数据库类型调用不同的SQL语句。例如,要对SQL krver与Oracle数据库两种数据库进行查询前N个数据的访问, 那么在进行SQL语句编写时,需要在代码中对这两种数据库进行方法上的区分。假设SQL Server 对应的方法为 Queryl,相应的 SQL i吾句为 select top N employee_id from tbl_ employee order by salary desc ;0racle数据库对应的方法为Query2,才画应的SQLi吾句为 select employee_id fromtbl_employee where rownum< = N order by salary desc。在对SQL Server进行查询前N个数据的访问时,在调用方需要调用方法Queryl,在对Oracle 数据库进行查询前N个数据的访问时,在调用方需要调用方法QUery2。然后选择对应的SQL 语句,根据用户输入的访问参数对SQL语句中的变量N进行赋值后,执行SQL语句。例如需要查询前10个数据时,将N赋值为10。可以看出,现有技术中对数据库的访问,需要在调用方实现各数据库类型的差异, 针对同一功能的访问,需要在方法上对不同数据库类型进行区分,从而提高了调用方操作的复杂度,当系统中的数据库类型较多时,缺点更加明显。
技术实现思路
有鉴于此,本专利技术提供了一种对数据库进行访问的方法和装置,以便于在调用方屏蔽数据库类型的差异,降低调用方操作的复杂度。—种对数据库进行访问的方法,应用于包含多种类型数据库模板的数据库访问装置,每种类型的数据库模板中包含该类型数据库的SQL语句以及SQL语句对应的功能标识, 所述数据库模板中具有相同功能的SQL语句对应相同的功能标识;该方法包括A、数据库访问装置启动后,加载所有模板;B、接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集;C、在所述结果集中查询所述调用指令包含的功能标识对应的SQL语句,执行该 SQL语句以实现对数据库的访问。一种对数据库进行访问的装置,该装置包括SQL模板单元、模板控制单元和SQL 执行单元;所述SQL模板单元,用于存储多种类型的数据库模板,每种类型的数据库模板中包含该类型数据库的SQL语句以及SQL语句对应的功能标识,所述数据库模板中具有相同功能的SQL语句对应相同的功能标识;所述模板控制单元,用于在所述装置启动后,加载所有模板;所述SQL执行单元,用于接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集,在所述结果集中查询所述调用指令包含的功能标识对应的 SQL语句,执行该SQL语句以实现对数据库的访问。由以上技术方案可以看出,本专利技术通过模板的形式保存各数据库的SQL语言及其对应功能标识,各数据库模板中具有相同功能的SQL语句对应相同的功能标识,使得在调用方进行功能调用时,无需对数据库类型进行调用,仅需要通过调用指令发送要访问的操作对应的功能标识,数据库访问装置便能够从当前连接的数据库类型对应的所有SQL语句构成的结果集中,查询出该功能标识对应的SQL语句,并执行该SQL语句以实现数据库的访问。可以看出,本专利技术能够在调用方屏蔽数据库的类型差异,降低调用方操作的复杂度。附图说明图1为本专利技术提供的主要方法流程图;图2为本专利技术实施例提供的执行层次示意图;图3为本专利技术提供的装置结构图。具体实施例方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。本专利技术提供的主要方法可以如图1所示,主要包括以下步骤步骤101 预先定义各类型数据库模板,每个数据库模板中包含该类型数据库的 SQL语句以及SQL语句对应的功能标识;其中,数据库模板中具有相同功能的SQL语句对应相同的功能标识。步骤102 访问数据库的装置启动后,加载所有模板。步骤103 接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集。步骤104 在步骤103确定的结果集中,查询调用指令包含的功能标识对应的SQL 语句,执行该SQL语句以实现对数据库的访问。下面结合具体实施例对本专利技术所提供的上述方法进行详细描述。图2为本专利技术所提供方法的执行层次示意图,主要分为SQL模板层、模板控制中间层和SQL执行层。对应执行流程可以具体包括以下步骤步骤201 预先定义各类型数据库模板,每个数据库模板中包含该类型数据库的 SQL语句以及SQL语句对应的功能标识。在该实施例中,模板中SQL语句及其标识的定义状况可以包括以下几种形式第一种形式仅存在数据库模板,各数据库模板中包含对应类型数据库的SQL语句以及SQL语句对应的功能标识。假设存在SQL Server数据库、Oracle数据库和MySQL数据库等,则可以根据数据库类型,分别预先定义SQL krver模板、Orac Ie模板和My SQL模板等。其中,SQL Server 模板中存储SQL Server数据库的SQL语句,Oracle模板中存储Oracle数据库的SQL语句, MySQL模板存储MySQL数据库的SQL语句。各数据库模板中的各SQL语句都存在与其对应的功能标识,在各类型的数据库模板中相同功能的SQL语句对应相同的功能标识,每个功能标识在一个数据库模板中是唯一的。例如,在 SQL Server 模板中定义 query, subsqll =“select top N employee_id from tbl_employee order by salary desc,,;在 Oracle 模板中定义 query, subsqll = select employee_id from tbl_employee whererownum < = N order by salary desc,,,由于这两个SQL语句都对应查询前N个数据的功能,因此,对应相同的功能标识query, subsqll。需要说明的是,在各模板中可以采用扩展标记语言(XML)文件的形式来进行定义,也可以采用“ID = SQL语句”的形式进行定义,本专利技术中以ID = SQL语句”的形式为例。第二种形式由于在某些情况下可能存在多种类型的数据库对应同一功能的SQL 语句是相同的,为了对这种情况下的SQL语句进行复用,除了设置各类型数据库模板之外, 还可以设置通用语句模板。通用语句模板中存储多种类型数据库的相同SQL语句以及SQL 语句对应的功能标识,如图2中SQL模板本文档来自技高网
...

【技术保护点】
1.一种对数据库进行访问的方法,其特征在于,应用于包含多种类型数据库模板的数据库访问装置,每种类型的数据库模板中包含该类型数据库的结构化查询语言SQL语句以及SQL语句对应的功能标识,所述数据库模板中具有相同功能的SQL语句对应相同的功能标识;该方法包括:A、数据库访问装置启动后,加载所有模板;B、接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集;C、在所述结果集中查询所述调用指令包含的功能标识对应的SQL语句,执行该SQL语句以实现对数据库的访问。

【技术特征摘要】
1.一种对数据库进行访问的方法,其特征在于,应用于包含多种类型数据库模板的数据库访问装置,每种类型的数据库模板中包含该类型数据库的结构化查询语言SQL语句以及SQL语句对应的功能标识,所述数据库模板中具有相同功能的SQL语句对应相同的功能标识;该方法包括A、数据库访问装置启动后,加载所有模板;B、接收到调用指令后,确定当前连接的数据库类型对应的所有SQL语句构成的结果集;C、在所述结果集中查询所述调用指令包含的功能标识对应的SQL语句,执行该SQL语句以实现对数据库的访问。2.根据权利要求1所述的方法,其特征在于,在步骤A中所述加载所有模板之后还包括将各模板中的SQL语句进行解析,分别得到各数据库类型对应的结果集,所述结果集中包含对应数据库的所有SQL语句以及SQL语句对应的功能标识。3.根据权利要求2所述的方法,其特征在于,所述数据库装置还包含通用语句模板,用于存储多种类型数据库相同的SQL语句以及SQL语句对应的功能标识;在所述将各模板中的SQL语句进行解析之后还包括对通用语句模板中的各SQL语句进行遍历,将遍历到的SQL语句及其功能标识分别添加到各数据库类型对应的结果集中。4.根据权利要求3所述的方法,其特征在于,所述通用语句模板中的SQL语句引用所述数据库模板中的功能标识,被引用的功能标识对应的SQL语句与引用该功能标识的SQL语句具有相同功能;在所述将遍历到的SQL语句及其功能标识分别添加到各数据库类型对应的结果集中之前还包括判断当前遍历到的SQL语句是否引用了其它功能标识,如果否,继续执行所述将遍历到的SQL语句及其功能标识分别添加到各数据库类型对应的结果集中;如果是,在各数据库类型对应的结果集中查找被引用的功能标识,在查找到被引用的功能标识的结果集中,将所述当前遍历到的SQL语句对应的功能标识替换查找到的结果集中被引用的功能标识,并将所述当前遍历到的SQL语句及其对应的功能标识添加到没有查找到被引用的功能标识的结果集中。5.根据权利要求3或4所述的方法,其特征在于,当在数据库访问装置中新增一种类型的数据库模板时,如果该新增的数据库模板中存在与通用语句模板中具有相同功能的不同 SQL语句时,该具有相同功能的不同SQL语句采用相同的功能标识;在将遍历到的SQL语句及其功能标识添加到结果集中之前,还包括判断要添加到的结果集中是否已经存在要添加的功能标识,如果是,则不将遍历到的SQL语句及其功能标识添加到结果集中,否则,将遍历到的SQL语句及其功能标识添加到结果集中。6.根据权利要求3所述的方法,其特征在于,数据库模板中的SQL语句引用所述通用语句模板中的功能标识;在对数据库模板中的SQL语句进行解析时,如果解析到的SQL语句引用了通用语句模板中的功能标识,则利用被引用的功能标识在通用语句模板中对应的SQL语句替换所述解析到的SQL语句中引用功能标识的部分。7.根据权利要求1、2、3、4或6所述的方法,其特征在于,步骤C中所述执行该SQL语句具体包括利用所述调用指令中的访问参数对查询到的SQL语句进行赋值,执行赋值后的SQL语句。8.—种对数据库进行访问的装置,其特征在于,该装置包括SQL模板单元、模板控制单元和SQL执行单元;所述SQL模板单元,用于存储多种类型的数据库模板,每种类型的数据库模板中包含该类型数据库的SQL语句以及SQL语句对应的功能标识,所述数据库模板中具有相同功能的SQL语句对应相同的功能标识;所述模板控制单元,用于在所述装置启动后,加载所有模板;所述SQL执行单元,用于接收到调用指令后,确定当前连接的数据库类型对应的所有 SQL语句构成的结果集,在所述结果集中查询所述调用指令包含的功能标识对应的SQL语句,执行该SQL语...

【专利技术属性】
技术研发人员:余天舒杨静涛
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1