一种创建数据库接口的方法、数据库操作方法及装置与流程

文档序号:11590459阅读:311来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种创建数据库接口的方法及装置、数据库操作方法及装置。
背景技术
::随着计算机技术的不断发展,计算机已经广泛地应用于人们的日常生活和工作中,极大地方便了人们的生活,这与计算机应用程序功能的多样化密不可分。在应用程序运行时,往往会使用数据库来对应用程序的数据进行管理。应用程序在使用数据库时,需要通过数据库接口来执行数据的写入、查找、删除等数据操作。在现有技术中,应用程序会利用应用程序中的代码创建数据库接口,这样,在接收到针对数据库的操作指令后,便可以利用创建的数据库接口执行相应的数据库操作。那么开发人员在对应用程序进行开发时,需要在程序的源代码中写入实现数据库接口功能的所有代码,该数据库接口的功能包括打开数据库、操作数据库中数据、关闭数据库、更新数据库等。随着应用程序功能的增多,单个应用程序可能会对多个数据库进行操作,单个数据库中往往包含多个数据表,每个数据表中往往也包含多个字段,这就需要开发人员在程序的源代码中,分别为各字段写入实现数据库接口功能的所有代码,其代码量是相当大的。在开发人员将应用程序的源代码编写完成后,需要经过编译过程,才能将利用源代码编写的源程序转换为计算机可执行的目标程序。那么,由于现有的创建数据库接口的方法需要在源程序中部署大量的源代码,导致在对源代码进行编译时,耗费的资源较高。技术实现要素:本申请实施例提供一种创建数据库接口的方法,用以解决现有技术中实现数据库接口的功能时需要在源程序中部署大量的源代码,导致在对源代码进行编译时耗费资源较高的问题。本申请实施例采用下述技术方案:一种创建数据库接口的方法,包括:从预设的配置文件中确定用于创建数据库接口的至少一个操作语句模板;根据所述至少一个操作语句模板,创建所述操作语句模板对应的数据库接口,所述数据库接口用于在接收到操作指令时确定操作语句模板并根据所述操作语句模板对数据库执行操作。本申请实施例还提供一种数据库操作方法,用以解决现有技术中实现数据库接口的功能时需要在源程序中部署大量的源代码,导致在对源代码进行编译时耗费资源较高的问题。本申请实施例采用下述技术方案:一种数据库操作方法,包括:接收针对数据库的操作指令;根据预先创建的数据库接口,从配置文件中确定与所述操作指令对应的操作语句模板,所述数据库接口,是通过本申请提供的创建数据库接口的方法创建的;根据所述操作语句模板和所述操作指令中包含的实参,得到针对所述数据库的操作语句;根据所述操作语句,对所述数据库执行数据库操作。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过从预设的配置文件中确定用于创建数据库接口的至少一个操作语句模板,然后根据所述至少一个操作语句模板,创建所述操作语句模板对应的数据库接口,即可在后续利用创建的数据库接口进行数据库操作。这样,即可以从配置文件中获取用于实现数据库接口功能的代码,该部分代码便无需保存在应用程序源代码中,减少了应用程序源代码的代码量,由于无需对配置文件中的代码进行编译,因此降低了对应用程序源代码进行编译时耗费的资源。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请实施例提供的一种创建数据库接口的方法的实现流程示意图;图2为本申请实施例提供的一种创建数据库接口的方法的实现流程示意图;图3为本申请实施例提供的一种数据库操作方法的实现流程示意图;图4为本申请实施例提供的数据表升级方法的实现流程示意图;图5为本申请实施例提供的并行操作数据库的方法的实现流程示意图;图6为本申请实施例提供的数据加密过程的实现流程示意图;图7为本申请实施例提供的数据解密过程的实现流程示意图;图8为本申请实施例提供的一种创建数据库接口的装置的具体结构示意图;图9为本申请实施例提供的一种数据库操作装置的具体结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。为解决现有技术中,实现数据库接口的功能时,需要在源程序中部署大量的源代码,导致在对源代码进行编译时耗费资源较高的问题,本申请实施例提供一种创建数据库接口的方法。本申请实施例提供的创建数据库接口的方法的执行主体可以是终端设备,例如,智能手机、平板电脑、个人计算机,等等。此外,该方法的执行主体还可以是应用程序本身。为便于描述,下文以该方法的执行主体为应用程序为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为应用程序只是一种示例性的说明,并不应理解为对该方法的限定。如
背景技术
:中所描述的,应用程序在进行数据库操作时,会通过数据库接口来进行数据操作。在面向对象应用程序中,数据库接口是以数据访问对象(dataaccessobject,dao)的形式存在的。dao中可以包含多种数据库操作方法,即一个dao中可以包含多个数据库接口。那么应用程序在调用数据库接口进行数据库操作时,会调用dao中的数据库操作方法,来执行数据库操作。需要说明的是,在面向对象应用程序中,方法指的是类别或者是对象的一种子程序,如同过程化编程语言的程序,一个方法通常由一系列的语句所组成。在面向对象的应用程序中,是利用源代码中数据库接口的定义和数据库接口的实现方法,来创建数据库接口。其中,接口的定义只是对接口的说明,接口的定义往往会包含接口的名称、接口参数、参数类型等内容。而接口的实现方法是指用于实现接口功能的具体方法,接口的实现方法中会包含实现接口功能的具体操作步骤,其代码量较大。在现有技术中,对于数据库接口的定义和实现方法都会在应用程序的源代码中进行完整的编写,以便应用程序可以根据编写的代码创建数据库接口。这样,源代码的代码量往往会很大,那么,在对源代码进行编译时,消耗的硬件资源会较高。所述数据库可以是应用程序所在终端本地的数据库,例如sqlite数据库等。为了解决该问题,对于基于动态编程语言编写的应用程序,可以仅在应用程序源代码中声明数据库接口的定义,然后将数据库接口的具体实现方法保存在配置文件中。配置文件中的代码无需进行编译,在应用程序运行时,应用程序可以解析配置文件,然后根据配置文件中的代码创建数据库接口,那么在进行数据库接口调用时,即可调用配置文件中保存的数据库接口的实现方法,完成数据库操作。所谓动态编程语言,指在应用程序运行时可以改变应用程序结构的语言,应用程序结构的改变比如可以是新的函数被引入应用程序、应用程序中已有的函数被删除等应用程序结构上的变化。常见的动态编程语言比如可以是ecmascript(javascript)语言、ruby语言、python语言等。此外objective-c语言可以凭借其消息发送机制,实现方法的调用。同时,objective-c也可以在运行时为指定类动态添加方法,实现动态调用的功能。基于动态编程语言的动态特性,应用程序即可根据配置文件中保存的数据库接口的实现方法,进行数据库操作。在利用数据库接口进行数据库操作前,会预先创建数据库接口。那么,在描述如何利用数据库接口进行数据库操作之前,首先对本申请中创建数据库接口的方法进行详细介绍。该方法的实现流程示意图如图1所示,包括下述步骤:步骤s101:从预设的配置文件中确定用于创建数据库接口的至少一个操作语句模板;其中,预设的配置文件中保存有至少一个操作语句模板,操作语句模板具体包括对数据库执行各种操作的数据库操作语句,各操作语句模板即为各数据库接口的具体实现方法。配置文件可以是由开发人员预先编写的,为了增强配置文件的通用性,在实际应用中,该配置文件可以是利用可扩展标记语言(extensiblemarkuplanguage,xml)编写的,由于xml语言符合万维网联盟(worldwidewebconsortium,w3c)标准,其通用性较强。为了减少配置文件中的代码量,对于数据库操作的方法相同,但是表名和/或字段名等参数值不同的数据库操作语句,可以将操作语句模板中的数据库操作语句中的表名、字段名等参数设置为形参。在sql语句中,形参可以用占位符“?”表示,在使用包含形参的操作语句时,可以将操作语句和参数进行参数绑定,然后执行数据库操作。参数绑定是指将实参与预处理过的操作语句中相应的占位符建立关联关系的操作,在执行参数绑定操作后,数据库便可以利用绑定有参数的操作语句执行数据库操作。这样在配置文件中,便可以将仅仅是表名和/或字段名等参数值不同的数据库操作语句,写作同一个包含形参的数据库操作语句。那么在实际对数据库进行数据库操作时,通过将实参赋值给该操作语句中的形参,即可得到实际执行操作时的数据库操作语句,利用绑定参数的数据库操作语句,即可执行数据库操作。这样,开发人员便可以不必为数据库中不同表名和/或不同字段的相同数据库操作,单独写数据库操作语句。需要说明的是,实现一个完整的数据库接口所使用的操作语句,会包括个性化的操作语句和必要且通用的操作语句。个性化的操作语句指不同的数据库接口中可以不同的操作语句,比如查找类操作语句、存储类操作语句、删除类操作语句等等。所谓查找类操作语句为对数据进行查找的操作语句,比如结构化查询语言(structuredquerylanguage,sql)中的select语句;所谓存储类操作语句,为将数据存储至数据库的语句,比如sql中的insert语句和update语句;所谓删除类操作语句,指将数据从数据库中删除的语句,比如sql中的delet语句。必要且通用的操作语句指每个数据接口都需要执行的操作,比如数据库开启语句、数据库关闭语句等等。为了便于后续描述,这里将数据库操作中个性化的操作语句称为第一操作语句,将数据库操作中必要且通用的操作语句称为第二操作语句。那么,可以只在配置文件中,实现第一操作语句的操作语句模板,对于第二操作语句,可以将其从配置文件中分离出来。这样,配置文件中的代码量将会大大减少,降低了应用程序复杂度,这样开发人员在编写配置文件时,只需编写第一操作语句的操作语句模板即可。需要说明的是,为了在后续接收到针对数据库的操作指令时,能够快速响应于该指令执行数据操作,最好是在应用程序启动后便立刻生成数据库接口。在应用程序的代码中,开发人员在声明数据库接口定义的同时,还会设置配置文件的路径。这样,在应用程序启动后,即可以根据应用程序代码中的配置文件路径,读取配置文件,并对配置文件进行解析,便可以得到配置文件中定义的各数据库接口的操作语句模板。以便后续根据数据库接口定义和解析得到的操作语句模板生成数据库接口。步骤s102:根据所述至少一个操作语句模板,创建所述操作语句模板对应的数据库接口。所述数据库接口用于在接收到操作指令时确定操作语句模板并根据所述操作语句模板对数据库执行操作。在面向对象应用程序中,在创建用于实现数据库接口功能的数据访问对象时,会预先生成用于生成该对象的类,然后再将生成的类中的方法指定为对各操作语句模板进行处理的模板处理函数。模板处理函数用于根据操作语句模板和实参得到操作语句;由于各操作语句模板的实际操作语句不同,操作语句模板中的参数个数也不同,那么对于不同的操作语句模板,可以确定与之对应模板处理函数,并将类中的方法指定为确定的模板处理函数。最后根据生成的类创建对象,即为数据访问对象,需要说明的是,可以为创建的数据访问对象与配置文件建立关联关系,以便在调用数据访问对象时,可以根据该关联关系确定配置文件中的操作语句模板。需要说明的是,在生成数据访问对象时,可以仅为该接口定义中声明的所有接口创建一个数据访问对象,也可以分别为该接口定义中声明的各个接口分别创建数据访问对象,本申请实施例对此不做限定,下面以为接口定义中声明的所有接口创建一个数据访问对象为例,对数据访问对象的创建过程进行描述。下面以objective-c语言为例,详细说明本申请提供的创建数据库接口的方法,在以objective-c语言编写的应用程序中的具体实现过程。在以objective-c语言编写的应用程序中,开发人员在应用程序代码中预先编写了数据库接口定义。由于接口定义中已经声明了接口的名称、接口参数、参数类型等属性,那么为了提高生成数据访问对象的效率,可以借助应用程序代码中的接口定义,来生成数据访问对象。通过应用程序代码中的接口定义和配置文件,生成数据访问对象的实现流程示意图如图2所示,具体包括如下步骤:步骤s201:解析配置文件和接口定义;在对配置文件进行解析时,可以根据应用程序代码中定义的配置文件的路径,确定配置文件,然后对配置文件进行解析,即可得到配置文件中的操作语句模板。同样,在对接口定义进行解析后,即可得到接口定义中声明的各个接口,即得到接口列表。例如,在xml格式的配置文件中,对某业务的某个select操作语句的操作语句模板的定义如下:<selectid=”querymsgswithuserid”arguments=”userid”result=”[apnewfindcontactmsg]”parallel=”true”>select*from$(t)whereuserid=#{uerid}orderbycreattimedesc</select>其中id部分为该操作语句模板的名称,即为方法名,arguments部分为操作语句模板中的参数,result部分定义了生成的数据对象的类,parallel部分用于指定该方法是否可以自动并发。“select*from$(t)whereuserid=#{uerid}orderbycreattimedesc”部分为操作语句模板,其本质也是数据库操作语句。与该操作语句模板对应的objective-c应用程序源代码中的接口定义如下:@protocolcontactdaoproxy<apdaoprotocol>-(apnewfindcontactmsg*)querymsgswithuserid:(nsstring*)userid;@end其中,querymsgswithuserid即为接口的名称,即该源代码中定义的接口为querymsgswithuserid。步骤s202:判断是否已经存在与接口定义中声明的各接口对应的类;步骤s203:如果判断结果为是,则证明已经预先生成过与该接口定义中声明的接口对应的类。则可以直接利用已经生成的该类,创建数据访问对象。步骤s204:如果判断结果为否,则生成用于创建访问对象的类;生成的类的名字可以和根据接口定义创建的接口对象名字相同,以便后续可以根据接口对象的名字,判断是否已为某接口对象生成了类。步骤s205:将各接口定义中的所有方法添加到生成的类中;步骤s206:将类中的各方法的实现绑定为与各方法对应的模板处理函数;其中,模板处理函数用于根据操作语句模板和实参得到操作语句。各个接口对应的模板处理函数,可以根据各操作语句模板中包含的形参来确定。模板处理函数具体可以由接口包含的形参的个数确定,即可以将各接口的模板处理函数指定为,能够接收的参数的数量与接口包含的形参的数量相同的模板处理函数。步骤s207:利用已经添加所有方法的类,生成数据访问对象,并为创建的数据访问对象与配置文件建立关联关系。在得到数据访问对象后,还可以将该数据访问对象转换为指向接口中方法的指针,通过该指针,可以直接调用接口中定义的方法。本申请提供的创建数据库接口的方法,通过从预设的配置文件中确定用于创建数据库接口的至少一个操作语句模板,然后根据所述至少一个操作语句模板,创建所述操作语句模板对应的数据库接口,即可在后续利用创建的数据库接口进行数据库操作。这样,即可以从配置文件中获取用于实现数据库接口功能的代码,该部分代码便无需保存在应用程序源代码中,减少了应用程序源代码的代码量,由于无需对配置文件中的代码进行编译,因此降低了对应用程序源代码进行编译时耗费的资源。同时,通过本申请提供的创建数据库接口的方法,开发人员不必在代码中为每一个数据库接口编写完整的实现方法,而只需在配置文件中,编写数据库操作中个性化的操作语句对应的操作语句模板、接口名称和参数,并且在源代码中定义接口说明,从而降低了应用开发的复杂度,方便开发人员对数据库接口的实现,提高了编写数据库接口的实现方法时的便利性。在创建数据库接口后,便可以在接收到针对该数据库接口的操作指令后,根据创建的数据库接口,从配置文件中确定操作语句模板,并利用确定的操作语句模板和操作指令中的实参,得到操作语句,对所述数据库执行数据库操作。下面将对利用得到的数据库接口进行数据库操作的方法,进行详细描述。该方法的实现流程示意图如图3所示,包括下述步骤:步骤s301:接收针对数据库的操作指令;步骤s302:根据预先创建的数据库接口,从配置文件中确定与所述操作指令对应的操作语句模板,所述数据库接口,是通过本申请实施例提供的创建数据库接口的方法创建的。在接收到针对数据库的操作指令后,可以根据预先生成的数据库接口,确定与该操作指令对应的模板处理函数,然后从配置文件中确定与确定的模板处理函数对应的操作语句模板。模板处理函数可以确定配置文件中与该模板处理函数对应的操作语句模板,即为与接收到的操作指令对应的操作语句模板。在面向对象的应用程序中,在接收到针对数据库的操作指令后,会调用数据访问对象中的方法。由于数据访问对象中的方法的实现为模板处理函数,那么在调用数据访问对象中与数据库的操作指令对应的方法时,会执行与该方法对应的模板处理函数。需要说明的是,在面向对象应用程序中,应用程序对配置文件解析完后,会根据配置文件中编写的每个操作语句模板,生成相应的接口方法对象,那么具体地确定操作语句模板的过程,即为确定操作语句模板对应的接口方法对象的过程。为了方便目标处理函数从配置文件中确定对应的操作语句模板,可以在给接口中的方法绑定模板处理函数时,将模板处理函数的函数名命名为对应的操作语句模板的名称。那么,模板处理函数即可根据自身的函数名,去配置文件中查找相同名称的操作语句模板。步骤s303:根据所述操作语句模板和所述操作指令中包含的实参,得到针对所述数据库的操作语句;在从配置文件中确定与操作指令对应的操作语句模板后,可以将所述操作指令中包含的实参,与所述操作语句模板中对应的形参相关联,得到针对所述数据库的操作语句。在实际应用中,可以将操作指令中包含的实参,与所述操作语句模板进行参数绑定,即可得到针对数据库的操作语句。步骤s304:根据所述操作语句,对所述数据库执行数据库操作。在得到针对数据库的操作语句后,即可利用该操作语句执行数据库操作。需要说明的是,如果操作语句模板中实现的操作语句,具体包括第一操作语句和第二操作语句,那么,可以根据操作语句模板和操作指令中包含的实参,得到针对数据库的第一操作语句,然后利用得到的第一操作语句和预设的第二操作语句,来执行针对数据库的数据库操作。在执行数据库操作后,在面向对象的应用程序中,当数据库操作为查找类操作时,可以利用从数据库中查找到的数据,得到数据对象。进而可以利用得到的数据对象,进行后续操作。在进行数据库操作时,如果数据库中的数据表不是最新版本的表,可能导致某些数据库操作无法进行。那么可以在根据操作语句,对数据库执行数据库操作前,判断所述操作指令针对的数据库的数据表是否需要升级,如果数据表需要升级,则从配置文件中确定将数据表从当前版本更新至目标版本所需执行的升级操作,并执行确定的升级操作。下面将详细描述本申请实施例提供的数据表升级方法,该方法的实现流程示意图如图4所示,包括下述步骤:步骤s401:接收数据表标识;数据表标识用于对数据表进行标识,数据表标识比如可以是数据表的名称。步骤s402:根据接收到的数据表标识,判断该数据表标识对应的数据表,在应用程序本次启动后,是否已经被执行过初始化操作;其中,这里所说的初始化操作,指数据表在应用程序启动后,已经被执行过升级操作或已经被确定无需执行升级操作。在对数据表执行完升级操作,或确定数据表无需执行升级操作后,可以将数据表的数据表标识记录在预定的存储空间中,该预定的存储空间比如可以是内存。那么判断数据表标识对应的数据表是否已被执行过初始化操作时,便可以查询预定的存储空间中,是否保存有该数据表标识,如果有,则说明该数据表标识对应的数据表已经被执行过初始化操作了。步骤s403:如果数据表已被执行过初始化操作,则结束本次升级过程。步骤s404:如果数据表未被执行过初始化操作,则判断数据表是否存在。接收到的数据表标识是从操作指令中得到的,该数据表标识对应的数据表并不一定存在,那么可以判定该数据表是否已存在于该指令对应的数据库中。在每次创建表或升级表后,都可以将数据表的数据表标识和版本号记录到预设的数据表中,如果预设的数据表中没有记录某个数据表的版本号,则说明该数据表不存在。步骤s405:如果数据表不存在,则根据接收到的数据表标识,新建数据表;新建的数据表即为与接收到的数据表标识对应的数据表。步骤s406:在新建数据表后,则在预设的数据表中,记录该数据表的数据表标识和版本号;步骤s407:如果数据表存在,则根据接收到的数据库表标识,从预设的数据表中确定该数据表的版本号;步骤s408:判断确定的数据表的版本号,是否小于配置文件中设定的目标版本的版本号;步骤s409:如果不小于,则结束本次升级过程;确定的数据表的版本号如果不小于配置文件中设定的目标版本的版本号,则表明该数据库当前版本已经是目标版本。步骤s410:如果小于,则判断该数据表是否可以在升级时重置;数据表可以在升级时重置,指可以在升级时直接删除数据表,然后新建目标版本的数据表。在实际应用中,判断该数据表是否可以在升级时重置,可以根据配置文件中的设置来确定。步骤s411:如果该数据表可以在升级时重置,则直接重置该数据表,并在预设的数据表中,记录该数据表的数据表标识和版本号,然后结束本次升级过程;步骤s412:如果该数据表不可以在升级时重置,则从配置文件中确定将所述数据表从当前版本更新至目标版本所需执行的升级操作;开发人员可以预先在配置文件中,定义将数据表从当前版本更新至目标版本所需执行的升级操作。例如,下述代码定义了将数据表升级至3.1版本以及升级至3.2版本时,所需执行的升级操作,其中“toversion”属性的值,声明了“upgrade”标签中的升级操作对应的目标版本,“altertable”语句用于在已有的表中添加、修改或删除列,“${t}”为形参,用于绑定数据表名。步骤s413:执行从配置文件中确定的升级操作;步骤s414:判断升级是否成功;步骤s415:若升级操作成功,则在预设的数据表中,记录该数据表的数据表标识和版本号,然后结束本次升级过程;步骤s416:若升级失败,则结束本次升级过程。需要说明的是,在结束本次升级过程时,可以将数据表的数据表标识记录在预定的存储空间中,以便后续可以根据预定的存储空间中记录的数据表标识,判断接收到的数据表标识对应的数据表,在应用程序本次启动后,是否已经被执行过初始化操作。本申请提供的数据库升级方法,相对于现有技术的数据库升级方法,应用程序的代码量大大减少,并且通过将数据表的具体升级操作保存在配置文件中,减少了应用程序的代码量,进而减少了对源代码进行编译时耗费的资源。最后编译生成的目标程序的大小也会小于现有技术中目标程序的大小,进而减少了对存储空间的占用。这里所说的目标程序,为通过编译过程生成的计算机可执行程序,目标程序中代码的形式往往是二进制形式。同时,相对于现有技术中将数据表的版本号单独保存到其它存储位置,本申请提供的数据库升级方法,通过将数据表的版本号记录到预设的数据表中,来记录数据表的当前版本,数据不易丢失,数据安全性较高。在实际应用中,某些数据库操作可能会期望与其它数据库操作并发执行,比如,在连续接收消息时,数据库会执行大量的消息写入操作,为了避免会话界面延迟显示消息,最好在执行消息写入操作的同时,并行执行读取消息的数据库操作。因此,本申请提供的数据库操作方法还可以支持对数据库的并行操作。本申请实施例提供的对数据库并行操作的方法包括,根据配置文件中预先设定的与操作语句对应的执行方式,判断该操作语句对应的数据库操作是否允许与其它数据库操作并行执行,在判断结果为是,且数据库主连接被占用时,根据该操作语句,利用创建的数据库子连接,对数据库执行数据库操作。下面将详细描述本申请提供的并行操作数据库的方法的具体实现过程,其实现流程示意图如图5所示,包括下述步骤:步骤s501:接收针对数据库的操作指令;步骤s502:判断数据库主连接是否被占用;步骤s503:如果数据库主连接没有被占用,则直接通过数据库主连接执行数据库操作;步骤s504:如果数据库主连接已被占用,则判断该操作指令对应的数据库操作是否可并行;所谓可并行,即可以与其它数据库操作并行执行。在实际应用中,某个数据库操作是否可并行,可以由开发人员在配置文件中预先进行设置。当应用运行时,即可通过配置文件中对数据库操作是否可并行的设置,来确定某个数据库操作是否可以与其它操作并行执行。具体在配置文件中设置某个数据库操作是否可并行的方式,可以是在该数据库操作对应的操作语句模板所在的标签中,通过定义某个属性的值,来定义该标签中的操作语句模板对应的数据库操作是否可并行。例如,定义属性“parallel”,如果该属性的值是“true”,则该标签中的操作语句模板对应的数据库操作可以并行,如果该属性的值是“false”,则该标签中的操作语句模板对应的数据库操作不可以并行。需要说明的是,如果该标签中没有“parallel”属性,则默认为该标签中的操作语句模板对应的数据库操作不可以并行。步骤s505:如果该数据库操作不可并行,则可以等待数据库主连接被释放后,再利用数据库主连接执行数据库操作;步骤s506:如果该数据库操作可以并行执行,则判断当前是否有空闲的数据库子连接;本申请实施例中,数据库子连接可以是在有需要并行执行的数据库操作时创建的,当并行执行的数据库操作结束后,为了防止数据库子连接在没有执行操作任务时耗费资源,则可以在数据库子连接空闲时,将数据库子连接关闭。具体关闭方式可以是,定时检测数据库子连接的空闲时长,如果数据库子连接的空闲时长超过了预设的时间阈值,则关闭空闲的数据库子连接。空闲时长指数据库子连接从结束上次操作的时刻到当前时刻的时间长度。步骤s507:如果没有空闲的数据库子连接,则新建数据库子连接,并利用新建的数据库子连接执行数据库操作;对于一个以上的并发操作而言,均可以在判断主连接被占用,以及没有空闲的子连接时,新建数据库子连接,并利用新建的数据库子连接执行数据库操作。步骤s508:如果有空闲的数据库子连接,则直接利用空闲的数据库子连接执行数据库操作。本申请实施例中,在初始化操作完成后,执行的数据库操作的具体步骤,请参阅步骤s101~s103,此处不再赘述。需要说明的是,这里所说的数据库主连接和数据库子连接均为数据库连接,用于为数据库操作提供操作通道。在现有技术中,在实现数据库接口的并发调用功能时,需要开发人员单独为每个并发调用数据库的实现逻辑编写代码。当需要并发调用的操作非常多时,应用程序的代码量会非常大。而本申请提供的数据库接口的并发调用方法,可以动态地创建数据库子连接,无需开发人员在程序源代码中为每个并发调用的实现逻辑编写代码。那么,源代码中的代码数量会大大减少,进而减少了对源代码进行编译时耗费的资源,同时减小了编译生成的目标程序的大小,减少了对存储空间的占用。在实际应用中,为了保证数据库中数据的安全,可以对存储到数据库中的数据进行加密。那么,在根据所述操作语句,对所述数据库执行数据库操作前,还可以根据配置文件中预设的加密方式,判断待存储的数据是否需要进行加密操作。在判定结果为是时,对待存储的数据执行加密操作,并根据所述操作语句,将加密后的数据存储到所述数据库中。下面将详细描述本申请提供的数据加密的方法的具体实现过程,其实现流程示意图如图6所示,包括下述步骤:步骤s601:确定包含待存储数据的数据对象;在面向对象的应用程序中,对数据进行接收是以接收数据对象的方式实现的。数据对象中的属性的属性值,即为待存储的数据。步骤s602:确定该数据对象的属性;步骤s603:判断该属性是否为加密属性;在实际应用中,可以在配置文件中,预先定义期望被加密的数据对应的数据对象的对象名,以及该对象的属性名。已经在配置文件中定义的、期望被加密的数据对应的数据对象的属性,即为加密属性。那么,在执行数据存储操作前,便可以根据配置文件的定义,确定可以对数据对象中的数据进行加密。步骤s604:如果该属性不是加密属性,则将该数据对象中的数据绑定给操作语句模板,然后执行数据存储操作;步骤s605:如果该属性是加密属性,则判断配置文件中是否定义了针对该属性的数据的加密方式;对于不同属性的数据,对其进行加密的加密方式可能会不同,那么,可以在配置文件中,预先定义针对某属性的数据的加密方式。步骤s606:如果配置文件中没有定义针对该属性的加密方式,则使用默认加密方式对数据执行加密操作;所谓默认加密方式,为预先设定的,用于对期望进行加密,但是没有在配置文件中定义加密方式的数据进行加密的方式。步骤s607:如果配置文件中定义了针对该属性的加密方式,则根据配置文件中定义的加密方式对数据执行加密操作;步骤s608:将加密后的数据赋值给操作语句模板,并执行数据存储操作。当从数据库中获取到加密的数据时,可以对获取到的加密的数据进行解密。那么当操作语句为查找类操作语句时,在根据操作语句,对数据库执行数据库操作后,还可以根据配置文件中预设的解密方式,判断查找到的数据是否需要进行解密操作,在判断结果为是时,对查找到的数据执行解密操作。具体数据解密过程的实现流程示意图如图7所示,包括下述步骤:步骤s701:从数据库中读取待赋值给数据对象的数据;步骤s702:确定待赋值的数据对象的属性;步骤s703:判断该属性是否为加密属性;步骤s704:如果该属性不是加密属性,则将读取到的数据赋值给待赋值的数据对象;步骤s705:如果该属性是加密属性,则判断配置文件中是否定义了针对该属性的数据解密方式;对于不同属性的数据,对其进行解密的解密方式可能会不同,那么,可以在配置文件中,预先定义针对某属性的数据的解密方式。步骤s706:如果配置文件中没有定义针对该属性的解密方式,则使用默认解密方式对数据执行解密操作;所谓默认解密方式,为预先设定的,用于对期望进行解密,但是没有在配置文件中定义解密方式的数据进行解密的方式。步骤s707:如果配置文件中定义了针对该属性的解密方式,则根据配置文件中定义的解密方式对数据执行解密操作;步骤s708:将解密后的数据,赋值给数据对象。本申请实施例提供的加密方式,可以在数据库接口中实现,在对待加密数据进行存储时,无需在调用数据库接口前自行加密;同样在对数据库中的加密数据进行读取时,无需在调用数据库接口后自行解密,提高了对数据进行加密或解密的效率。此外,相对于相应技术中,在进行加密或解密时需要使用额外的第三方数据库的方式,减少了对资源的消耗。同时,相对于现有技术中对数据库全库加密的方式,提高了数据库的访问效率。本申请实施例中,通过将数据库操作的具体实现保存在配置文件中,在调用数据库接口时,动态调用配置文件中数据库接口的实现方法,那么应用程序的源代码的量会大大减少。由于配置文件无需编译,那么在对源代码进行编译时,便减少了资源的耗费。需要说明的是,本申请中所说的编译,为将利用源代码编写的源程序转换为计算机可执行的目标程序的过程。同时,对于数据库开发人员而言,在期望修改数据库的具体实现方法时,可以通过修改配置文件,来修改数据库的具体实现方法。由于修改过程中没有对程序源代码进行修改,无需在修改后重新编译应用程序源代码,进一步节省了资源。同时,可以对目标程序中的数据库接口的具体实现方法进行动态修改。以上为本申请实施例提供的创建数据库接口的方法和数据库操作方法,基于同样的思路,本申请实施例还提供相应的创建数据库接口的装置,如图8所示,本申请实施例还提供相应的数据库操作装置,如图9所示。图8为本申请实施例提供的创建数据库接口的装置的结构示意图,具体包括:确定单元801,从预设的配置文件中确定用于创建数据库接口的至少一个操作语句模板;创建单元802,根据所述至少一个操作语句模板,创建所述操作语句模板对应的数据库接口,所述数据库接口用于在接收到操作指令时确定操作语句模板并根据所述操作语句模板对数据库执行操作。在一种实施方式中,所述创建单元802,针对确定的至少一个操作语句模板,执行以下操作:确定与操作语句模板对应的模板处理函数,所述模板处理函数用于根据所述操作语句模板和实参得到操作语句;根据确定的操作语句模板,以及与该操作语句模板对应的模板处理函数,创建所述操作语句模板对应的数据库接口。在一种实施方式中,所述创建单元802,确定所述操作语句模板中包含的形参;根据所述操作语句模板中的形参,确定所述操作语句模板对应的模板处理函数。图9为本申请实施例提供的数据库操作装置的结构示意图,具体包括:接收单元901,接收针对数据库的操作指令;确定单元902,根据预先创建的数据库接口,从配置文件中确定与所述操作指令对应的操作语句模板。所述数据库接口,是通过本申请提供的创建数据库接口的方法创建的;获得单元903,根据所述操作语句模板和所述操作指令中包含的实参,得到针对所述数据库的操作语句;执行单元904,根据所述操作语句,对所述数据库执行数据库操作。在一种实施方式中,确定单元902,根据预先生成的数据库接口,确定与所述操作指令对应的模板处理函数;从配置文件中确定与确定的模板处理函数对应的操作语句模板。在一种实施方式中,获得单元903,将所述操作指令中包含的实参,与所述操作语句模板中对应的形参相关联,得到针对所述数据库的操作语句。在一种实施方式中,所述装置还包括升级单元905,在判定所述操作指令针对的数据库的数据表需要升级时,从配置文件中确定将所述数据表从当前版本更新至目标版本所需执行的升级操作;执行所述升级操作。在一种实施方式中,所述操作语句具体包括第一操作语句和第二操作语句,其中,所述第一操作语句为数据库操作中个性化的操作语句,所述第二操作语句为数据库操作中必要且通用的操作语句;获得单元903,根据所述操作语句模板和所述操作指令中包含的实参,得到针对所述数据库的第一操作语句;执行单元904,利用所述第一操作语句和预设的第二操作语句,执行针对所述数据库的数据库操作。在一种实施方式中,所述第一操作语句包括查找类操作语句、存储类操作语句、删除类操作语句中的至少一种或者多种:所述第二操作语句包括以下至少一种或者多种:数据库开启语句;数据库关闭语句。在一种实施方式中,所述装置还包括加密单元906,当所述操作语句为存储类操作语句时,在根据所述操作语句,对所述数据库执行数据库操作前,根据配置文件中预设的加密方式,判断待存储的数据是否需要进行加密操作;执行单元904,在判定结果为是时,对待存储的数据执行加密操作,并根据所述操作语句,将加密后的数据存储到所述数据库中。在一种实施方式中,所述装置还包括解密单元907,当所述操作语句为查找类操作语句时,在根据所述操作语句,对所述数据库执行数据库操作后,根据配置文件中预设的解密方式,判断查找到的数据是否需要进行解密操作;在判断结果为是时,对查找到的数据执行解密操作。在一种实施方式中,执行单元904,根据配置文件中预先设定的与所述操作语句对应的执行方式,判断所述操作语句对应的数据库操作是否允许与其它数据库操作并行执行;在判断结果为是,且数据库主连接被占用时,根据所述操作语句,利用创建的数据库子连接,对所述数据库执行数据库操作。在一种实施方式中,所述装置还包括关闭单元908,当检测到所述数据库子连接的空闲时长超过预设的时长阈值时,关闭所述数据库子连接。在一种实施方式中,所述数据库接口为面向对象的数据库接口。在一种实施方式中,数据对象获得单元,当所述数据库操作为查找操作时,在对所述数据库执行数据库操作后,利用从所述数据库中查找到的数据,得到数据对象。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1