一种跨平台的数据库访问方法

文档序号:6541361阅读:2298来源:国知局
一种跨平台的数据库访问方法【专利摘要】一种跨平台的数据库访问方法,包括步骤:初始化统一查询语言UQL;编写统一查询语言UQL语句;对统一查询语言UQL语句进行预处理;判断是否进行语法判断;将相应语法形式化封装,生成XML表达式;解析XML表达式,获取相应参数;根据获取到的参数提取统一查询语言UQL语句的目标数据库类型、统一查询语言UQL语句的访问类型,选择对应的基础模块进行参数填充并执行;将执行结果形式化封装返回。本发明让内部的服务方法不再是一个个有针对性的具体方法实现,而是一个通用的解析执行模块,在iOS客户端,放弃以前直接调用服务方法的简单流程,通过数据访问语句来达到数据访问的目的。【专利说明】一种跨平台的数据库访问方法【
技术领域
】[0001]本发明属于数据库访问方法【
技术领域
】,涉及一种跨平台的数据库访问方法。【
背景技术
】[0002]随着移动终端普及程度的不断提高,终端应用开发也随之成为热点,给人们的生活、工作、学习带来了很大的便利,而iOS(苹果公司的手持设备操作系统)平台则是其中最大的平台,在移动开发领域中占有举足轻重的地位。iOS应用的开发虽是基于iOS平台,但是往往需要后台服务器的支持。其中大部分服务器是基于其他操作系统平台的,因此出现了大量跨平台的服务器访问的问题。[0003]目前用到的方法主要是使用WebService(网络服务)进行服务器访问。WebService是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务。各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果。WebService可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。传统基于WebService的交互方式虽然实现跨平台数据库访问,但是,不够灵活,不能够通用,维护代价也比较大。【
发明内容】[0004]本发明目的在于提供一种跨平台的数据库访问方法,解决现有技术不够灵活,不能通用的问题。[0005]本发明的技术方案是,一种跨平台的数据库访问方法,包括以下步骤:[0006]第I步:初始化统一查询语言UQL,输入开关参数;[0007]第2步:编写统一查询语言UQL语句;[0008]第3步:对统一查询语言UQL语句进行预处理;[0009]第4步:根据第I步中的开关参数判断是否进行语法判断;对于不需要进行规则判断的统一查询语言UQL语句直接执行第5步;而对于需要进行语法规则判断的统一查询语言UQL语句,则进行语法验证;[0010]第5步:将相应语法形式化封装,生成XML表达式;[0011]第6步:解析XML表达式,获取相应参数;[0012]第7步:根据获取到的参数提取统一查询语言UQL语句的目标数据库类型、统一查询语言UQL语句的访问类型,选择对应的基础模块进行参数填充并执行。[0013]第8步:将执行结果形式化封装返回。[0014]上述第4步中的语法验证具体包括:[0015](I)对统一查询语言UQL语句进行预处理。[0016]预处理包括将表达不同含义的“O”根据其不同含义进行相应变形,将需要单独处理而没有用空格隔开的单词自动添加空格,最后将整个UQL语句中多余的空格去除。[0017](2)提取形纹,即将统一查询语言UQL语句数值化。[0018]提取形纹的具体方法为将UQL语句拆分成单词,然后根据关键词分配表进行相应的数值替换,对于非关键词单词以负数替换,其绝对值为该词在当前数组中的位置下标;同时,还识别记录一些会触发语句转换的关键词的数值,用于后续可能存在的数据库语言形式转换操作。[0019](3)进行规则库匹配,当匹配成功时执行第5步;匹配失败时进行案例库匹配,若成功则执行第5步,失败时返回第2步;[0020]案例库匹配为将统一查询语言UQL语句的形纹与在案例库中的形纹案例做对比,看是否存在该案例记录;不存在则匹配失败,但此时不能武断的判定该统一查询语言UQL语句就一定不合法,此时应进行相应的后台操作,即反馈案例。[0021]案例库匹配成功,即认为当前的统一查询语言UQL语句是正确语法,此时要检测是否要进行相应的语法转换,若需要,则进行相应的转换,然后进行形式化封装,不需要则直接进行XML形式化封装,最后将这个统一查询语言UQL语句同样发送到服务器;案例库匹配不成功,即认为当前的统一查询语言UQL语句是错误语法,但是,同时后台会将这个统一查询语言UQL语句同样发送到服务器,倘若服务器正确执行并返回了结果,则该语句是正确的,后台会自动提取该统一查询语言UQL语句的形纹,并且将其存入案例库中即加入到Trie树里面,并且Tire树转化成相应的文件,以文件形式写入本地,当下一次遇到该类型的案例时就能判断出该案例是符合语法规则的了。[0022]本发明具有如下有益效果:[0023]1、本发明改变Webservicce存在的作用,让内部的服务方法不再是一个个有针对性的具体方法实现,而是一个通用的解析执行模块。在iOS客户端,放弃以前直接调用服务方法的简单流程,而是通过数据访问语句(自定义为统一查询语言UQL语句),来达到数据访问的目的。这些统一查询语言UQL语句都是类似基础的数据库语句,通过各种组合可以实现所有的数据访问目的。[0024]2、本发明可以兼容多种数据库。其中的服务器端WebService服务,可以根据不同的客户端请求的需求去访问不同类型的数据库,目前支持SqlServer、Oracle、MySql等。它完全是一个通用可移植的模块,一旦完成就可以供众多应用开发使用,不局限与具体应用以及具体数据库。[0025]3、本发明所有用于实现跨平台数据库访问的方法被封装成静态库,开发人员将静态库以及相关的头文件加入到工程里面,在需要进行数据库访问的类里面加入相关头文件,就能进行相应方法的调用,实现跨平台的数据库。[0026]4、本发明定义“形纹”概念,对于统一查询语言UQL语句语法的验证及其语句转化工作都是基于形纹概念完成的,将传统的针对字符验证的复杂操作变成了针对数值序列的操作,大大的简化了验证操作的过程,提高了验证效率,并且能够很好的满足本发明的需求。【专利附图】【附图说明】[0027]图1为本发明跨平台的数据库访问方法的整体交互模型图。[0028]图2为本发明跨平台的数据库访问方法流程图。[0029]图3为本发明跨平台的数据库访问方法的客户端核心模块的执行流程图。[0030]图4为本发明跨平台的数据库访问方法中用于保存形纹库的Trie树的结构示意图。[0031]图5为本发明跨平台的数据库访问方法的案例库生成流程图。[0032]图6为本发明跨平台的数据库访问方法服务器端WebService的一个交互模型图。【具体实施方式】[0033]下面结合附图和【具体实施方式】对本发明作进一步详细的说明。[0034]本发明涉及到的自定义概念解释:[0035]1.统一查询语言UQL:UnifiedQueryLanguage,统一查询语言。这个定义是对本发明的核心思想一种高度概括凝练,在进行开发的过程中进行访问数据库时,需要写入实现访问需求的数据库语句,目前暂时用比较通用的SqlServer语句作为语法模型,也就是在写数据库语句时,其实写的是SqlServer语句,但是可以将该语句转换成表达相同访问意图的其他数据库语句,所以可以理解为统一的查询语言,称之为统一查询语言UQL语句。[0036]2.形纹:每种数据库语言都是通过设定好的语法规则完成语义表达的,这些语法规则以特定的形式进行组织。由于语法规则是固定的,所以这些语法的表现形式也是固定不变的。因此可以从这些语法形式上进行相应的提炼,总结出规律。数据库语言的表现形式主要是通过一些关键词组来支撑,类似骨架一样,是一个语句的主体。同一类语义的语句主体是不变,只要把其中的部分非关键词的成分替换就能实现很多不一样的访问语句。但是这些核心主体骨架是不会改变。当将这些关键词数值化后,这些关键词形成的有序数列就被提炼出来了,他们代表了一类语法结构,有很重要的意义。它们独特而唯一,类似人的指纹一样,因此将这些有意义的数值序列称之为”形纹”。简单的说,形纹就是一些关键词的数值化后的序列。但是这些关键词当中也会分出主次,有些关键词序列能够决定一类语句的核心思想,但是有的却只是起到辅助作用,让功能更加完善。因此需要再次细化。将决定结构,类似主干的一些形纹定义为“主纹”,而那些不会影响主体的形纹定义为“辅纹”。[0037]3.语法规则库:模糊推理方法中把多条规则经过一些方法变换整合成一个条规贝U,形成单一的输入输出对应关系。借用这套思想,本发明将众多基本语法规则进行提炼,基于形纹的形式产生了一个判断语法是否正确的处理函数,称之为语法规则库。它是对一套基本的语法规则的提炼。采用这种方式处理问题是基于众多因素考虑的,本发明的目的是为了解决开发人员进行跨平台数据库访问遇到的问题,因此所涉及到的仅仅是数据库中访问性操作,例如增删改查,并不涉及到所有数据库的知识,有特定的针对方向。主要目的是实现跨平台访问,进行正确性测试是为了完善该访问模式的实用性。由于涉及面比较窄,所以语法规则库在很大程度上可以很好的满足设定需求。并且判断方法简单快捷,这也是本发明的一个创新之处。[0038]4.案例库:顾名思义是指一些实际案例的集合。由于规则库是对语法规则的一种归纳和总结,可以在很大程度上满足大部分语法情况,但是不排除会有一些规则库无法识另IJ,但是却是正确的语句。为了完善语法判断机制,所以设置了一个案例库,会自学习一些规则库判断失效但其实是正确的形纹案例,进行收集整理,作为规则库的一个完善与补充。该案例库的收集对规则库后期的改进将提供更多的依据,具有很重要的意义。[0039]本发明也是基于WebService技术,但是提出了另外一种不同的交互方式。为了能更好的实现交互体验,本发明借用了模糊推理的一些思想,将其融入到交互机制当中,增加了该机制的鲁棒性。[0040]模糊推理在工业控制以及新型家电产品的开发上取得了很大的成功。对于一个传统的人工控制系统,在对控制结构做适当调整后,再增加一个模糊控制器即可实现自动控制。而模糊控制器的核心部件是模糊推理机。在这个推理机中,除了有与外部设备的信息通道,主要存放了由领域专家经验构成的模糊规则库,又叫知识库。模糊推理本身更多的涉及到的是一些逻辑推理方法的研究,而本发明更多侧重于工程实用,所以也并不是完全就是一个模糊推理,而是吸取了模糊推理的一些思想。[0041]传统交互方式致使服务器端WebService不可移植且后期维护成本高,其主要问题就是WebService的服务方法具有高耦合性。而本发明的访问机制,其核心思想是打破传统交互方式中WebService的存在作用。WebService负责接收不同的基本数据库语句,根据不同的需求去访问不同类型的数据库,而不是定义一些针对性特别强的服务方法。客户端在需要进行数据库访问时不再调用一个个固定的服务方法,而是直接写入对应可以实现访问需求的统一查询语言UQL语句(即数据库语句)。本发明中的交互方式将负责进行交互的方法函数封装成一个静态库中,在开发应用的过程中,只需要将该静态库以及相应的头文件导入即可进行相应的方法调用,完成数据库访问。[0042]1.本发明整体的交互模型如图1所示:[0043]跨平台数据库访问机制整体设计主要分为两大部分,客户端静态库以及服务器端的WebService服务:[0044]I)静态库中封装了所有用于完成跨平台数据库访问的方法,开发人员在进行项目开发过程中需要将该静态库导入作为项目的一部分,这样才能调用完成跨平台数据库的所有方法。最终静态库中的方法会将表达数据库访问意图的统一查询语言UQL语句进行封装发送到服务器端,等待服务器端的执行结果返回。[0045]2)服务器端的WebService服务里面定义了一些底层通用的方法,并不针对具体的数据库访问意图。它包括了多种数据库的执行单元,将接收到的请求解析出各种参数,根据参数将请求分配给具体的数据库执行单元去执行,这样就达到了很好的兼容性。[0046]2.参见图2,本发明跨平台的多数据库访问方法基本工作步骤如下:[0047]第I步:初始化一个统一查询语言UQL实例,设置关键参数,其中包括目标服务器的ip地址,目标数据库类型以及一个用于判断是否使用目标数据库语言的开关参数。这些设置对接下来的操作起到决定性的作用。[0048]第2步:填写用户要实现访问目的的数据库语句(即统一查询语言UQL语句)。该语句可以是普通的增删改查语句,也可以是存储过程的调用语句。两类语句的处理方式不同。[0049]第3步:将统一查询语言UQL语句进行预处理,该操作是为了为后续操作做准备。[0050]第4步:对于需要进行语法分析的统一查询语言UQL语句,要进行相应的语法分析操作。验证语法是否正确。语法正确进行下步操作,不正确则返回相应的提示。[0051]第5步:将相应语法形式化封装,本发明中采用的是XML格式。[0052]第6步:将接收到请求里面的XML进行解析,获取相应参数。[0053]第7步:根据不同的数据库类型,进行相应的语句执行。[0054]第8步:将执行结果形式化封装返回。[0055]3.参见图3,本发明跨平台数据库访问方法核心模块执行流程如下:[0056]步骤1:首先根据统一查询语言UQL实例初始化时传入的开关参数进行判断,该开关决定是否使用目标数据库语言。当开发人员对目标数据库语言很熟悉,并且想提高执行效率,可以直接跳过判断语法以及数据库语法转换的步骤,不使用以SqlServer为标准的统一查询语言UQL语句,而是直接使用目标数据库语句,例如Oracle或MySql。给出这样开放式的设定,是为了更好的满足不同开发者的需求,并且增加该数据库访问模式的灵活性。[0057]步骤2:对于需要进行自动转换的语句,即不使用目标数据库语法的统一查询语言UQL语句,需要进行以下流程。该步骤主要是进行预处理,预处理主要是对统一查询语言UQL语句进行相关前期处理工作,例如将语句中的“O”按照不同作用进行相应变形。由于“O”作用不同,将来对应的数值也不同,后续处理方式也不同,如包含子语句的“O”变形为“H”,将来在语法识别时需要进行递归检查,对于包含一些内容的“O”变形为“[]”,对于表示函数的空“O”不做任何处理。对于需要作为独立部分处理但却又没有用空格分开的单词需要在单词前添加相应的空格,然后还要将统一查询语言UQL语句中多余的空格去掉,方面后续统一查询语言UQL语句拆分、解析。[0058]步骤3:提取形纹,即将统一查询语言UQL语句数值化。该步骤涉及到本发明的一个较为核心的概念。本发明对数据库语句的操作基本上都是基于形纹的概念。它是一个数据库语句的主干,将数据库语句数值化后,这样将对复杂的字符操作变成了对一堆数值的操作,对其进行分析判定就更加方便。对于数据库关键词的数值化分配是结合了诸多因素,可以说是对数据库语法规则的一种高度凝练和总结,如表I所示展示了部分数据库关键词的数值分配。同时在提取形纹的过程中,还会去识别记录一些会触发语句转换的关键词的数值,用于后续可能存在的数据库语言形式转换操作。[0059]步骤4:进行规则库匹配,此步骤是为了验证该条统一查询语言UQL语句是否符合语法规则。其核心规则是经过分析提炼,以及关键词数值分配,形成规则,保证了只要语法正确,则统一查询语言UQL语句形纹的数值就会呈现一种不递减的发展趋势。其中有一个关键的函数,它能根据当前检测到的关键词的数值预测下一个关键词数值的底线阀值,一旦小于这个阀值,那么就必然表明这个语句不符合规则库。这个函数正是和形纹概念配合才真正的实现了这种数值化语法验证的思想,完成了一次对数据库语法的凝练和总结。[0060]步骤5:当案例库中没有匹配成功时,此时不能武断的认为该统一查询语言UQL语句就一定不合法。本发明是对语法规则进行了一种新的验证方法探索,可能会存在某种程度的缺陷,为了增加该模式的健全性,特意设立案例库匹配这一步骤。案例库里面包含了一些虽未通过规则库验证但事实上是正确的统一查询语言UQL语句的形纹案例,该案例库中的形纹通过Trie树这种结构保存,如图4所示。这种结构可以很快速的进行匹配验证以及添加新的案例形纹。[0061]步骤6:对于通过验证的统一查询语言UQL语句可能需要经过一些转换工作。由于统一查询语言UQL语句是以SqlServer为标准,当目标数据库是Oracle、MySql等非SqlServer数据库时,虽说大部分基本增删查改语句相似度很大,但毕竟是不同于数据库语言,还是会有差异存在的。为了让其能在服务器端正确执行,还需要将统一查询语言UQL语句进行相应的转换,使其在语义不变的情况下转换成符合目标数据库语法规则的语句。对于统一查询语言UQL的转化换是根据一些关键词触发执行的。这些关键词是通过各类数据库关键词进行对比,找出表达相同语义却有差异的关键词。有些关键词在各个数据库表达语义时只是该关键词不同,将其替换后就可变成目标数据库语句,例如SqlServer里面的isnull对应Oracle的nvl,对应MySql里面的ifnull,遇到这种情况的替换,只需要将关键词进行替换。有的关键词在表达语义时,不仅关键词不一样整个语句的结构也发生了变化,例如SqlServer里面的带top的语句selecttop8*fromtable,对应的MySql里面的的limit语句select*fromtablelimit8。对于这些关键词的处理,构造函数针对每个关键词进行处理,保证在语义不变的情况下将行使转化成目标数据库的语句。对于会触发转化的关键词归入了形纹中的辅纹类,其中能被3整除的触发关键词转换,被10整除的触发形式化转换。[0062]步骤7:将所有的信息进行形式化封装,此处采用XML格式。这种标签化的组织结构方便服务器端快速精准解析。[0063]步骤8:发送服务请求。[0064]1.本发明实施例中涉及到的关键词数值分配如表I所示:[0065]表I[0066]主纹关键字群基本模态:selectI【权利要求】1.一种跨平台的数据库访问方法,其特征在于,包括以下步骤:第I步:初始化统一查询语言UQL,输入开关参数;第2步:编写统一查询语言UQL语句;第3步:对统一查询语言UQL语句进行预处理;第4步:根据第1步中的开关参数判断是否进行语法判断;对于不需要进行规则判断的统一查询语言UQL语句直接执行第5步;而对于需要进行语法规则判断的统一查询语言UQL语句,则进行语法验证;第5步:将相应语法形式化封装,生成XML表达式;第6步:解析XML表达式,获取相应参数;第7步:根据获取到的参数提取统一查询语言UQL语句的目标数据库类型、统一查询语言UQL语句的访问类型,选择对应的基础模块进行参数填充并执行;第8步:将执行结果形式化封装返回。2.如权利要求1所述的跨平台的数据库访问方法,其特征在于,第4步中的语法验证具体包括:(1)对统一查询语言UQL语句进行预处理;(2)提取形纹,即将统一查询语言UQL语句数值化;(3)进行规则库匹配,当匹配成功时执行第5步;匹配失败时返回第2步,进行案例库匹配。3.如权利要求2所述的跨平台的数据库访问方法,其特征在于,所述的对统一查询语言UQL语句进行预处理,包括将表达不同含义的“O”根据其不同含义进行相应变形,将需要单独处理而没有用空格隔开的单词自动添加空格,最后将整个UQL语句中多余的空格去除。4.如权利要求2所述的跨平台的数据库访问方法,其特征在于,所述提取形纹的具体方法为将UQL语句拆分成单词,然后根据关键词分配表进行相应的数值替换;同时,还识别记录一些会触发语句转换的关键词的数值,用于后续可能存在的数据库语言形式转换操作。5.如权利要求2所述的跨平台的数据库访问方法,其特征在于,所述案例库匹配为将统一查询语言UQL语句的形纹与在案例库中的形纹案例做对比,看是否存在该案例记录;不存在则匹配失败,但此时不能武断的判定该统一查询语言UQL语句就一定不合法,此时应进行相应的后台操作,即反馈案例。6.如权利要求5所述的跨平台的数据库访问方法,其特征在于,案例库匹配成功,即认为当前的统一查询语言UQL语句正确语法;然后判断是否需要进行相应的形式化转换,若需要则进行相应的形式化转化然后封装,不需要则直接形式化封装,最后将这个统一查询语言UQL语句同样发送服务器;案例库匹配不成功,即认为当前的统一查询语言UQL语句是错误语法;但是同时后台会将这个统一查询语言UQL语句同样发送服务器,倘若服务器正确执行并返回了结果,则该语句是正确的,后台会自动提取该统一查询语言UQL语句的形纹,并且将其存入案例库中即加入到Trie树里面,并且Tire树转化成相应的文件,以文件形式写入本地。【文档编号】G06F17/30GK103902677SQ201410108751【公开日】2014年7月2日申请日期:2014年3月21日优先权日:2014年3月21日【发明者】王磊,曹龙,叶晓辉,费蓉,黑新宏申请人:西安理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1