依据输入数据产生查询语法的系统及其方法

文档序号:6583915阅读:171来源:国知局

专利名称::依据输入数据产生查询语法的系统及其方法
技术领域
:一种产生查询语法的系统及其方法,特别是指一种依据输入数据产生查询语法的系统及其方法。
背景技术
:数据库是各式各样具有相关性档案的集中地,若要对数据库进行存取,则必须遵守数据库制定的规则与方法,使用数据库可以达到最少重复、最佳利用且能让多数人共同使用的目的。在大部分的情况下,为了让数据库中的数据保有隐密以及安全性,且为了让使用者方便存取数据库中的数据,开发者会提供使用者界面来让使用者进行操作。由于存取数据库的操作指令并不多,而且各个操作指令也有相对应的固定语法,所以开发者在开发提供使用者进行数据查询的查询界面时,虽然查询界面中可能会提供各种查询的项目来让使用者选择,但事实上,开发者依据各种查询项目所撰写出的存取数据库的程序代码时经常会使用到相同的操作指令,甚至可能撰写出相同的查询语法,差别仅在于被存取的数据表以及数据表(table)中的字段名称不同。由于开发者会依据各种查询项目撰写出相对应的各个查询语法,因此开发者通常会为各个查询语法建立相对应的数据库存取服务,虽然这样的开发过程较为快速,但却因为提供服务的主机需要执行多个数据库存取服务,从而造成服务主机的资源浪费。综上所述,可知现有技术中长期以来一直存在为不同的查询语法建立相对应的数据库存取服务会造成资源浪费的问题,因此有必要提出改进的技术手段,来解决此一问题。
发明内容有鉴于现有技术存在为不同的查询语法建立相对应的数据库存取服务会造成资源浪费的问题,本发明遂提供一种依据输入数据产生查询语法的系统及其方法,其中本发明所提供的依据输入数据产生查询语法的系统,至少包含储存模块,用以储存基本语法,及储存查询界面,查询界面包含至少一输入项目,输入项目对应项目参数;接收模块,用以接收对应输入项目的输入数据;语法生成模块,用以依据项目参数及输入数据产生附加语法,并合并基本语法及附加语法为查询语法;查询模块,用以以查询语法查找目标数据;输出模块,用以提供查询界面,及用以输出目标数据。本发明所提供的依据输入数据产生查询语法的方法,其步骤至少包括储存基本语法;提供包含至少一输入项目的查询界面,输入项目对应项目参数;接收对应输入项目的输入数据;依据项目参数及输入数据产生附加语法,并合并基本语法及附加语法为查询语法;以查询语法查找目标数据;输出目标数据。本发明所提供的系统与方法如上,与现有技术之间的差异在于本发明通过依据预存的基本语法、与查询界面中的输入项目对应的项目参数、以及被输入至相对应的输入项目的输入数据产生查询语法后,以查询语法查找目标数据,藉以解决现有技术所存在的问题,并可以达成减少相似的程序代码、及降低程序代码维护复杂度的技术功效。图IA为本发明所提供的依据输入数据产生查询语法的系统架构图;图IB为本发明所提供的另一种依据输入数据产生查询语法的系统架构图;图2为本发明实施例所提供的查询界面示意图;图3为本发明实施例所提供的产生附加语法的程序代码示意图;图4A为本发明实施例所提供的产生查询语法的程序代码示意图;图4B为本发明实施例所提供的产生查询语法的程序代码示意图;图5A为本发明所提供的依据输入数据产生查询语法的方法流程图;图5B为本发明所提供的产生查询语法的详细方法流程图。主要组件符号说明110储存模块130接收模块150语法生成模块160查询模块170输出模块200查询界面211输入项目212输入项目215输入项目221输入项目222输入项目231输入项目237输入项目241输入项目251输入项目252输入项目301程序代码302程序代码321程序代码332程序代码340程序代码350程序代码370程序代码390程序代码400客户端具体实施例方式以下将配合图式及实施例来详细说明本发明的特征与实施方式,内容足以使任何本领域技术人员能够轻易地充分理解本发明解决技术问题所应用的技术手段并据以实施,藉此实现本发明可达成的功效。本发明是应用在目标数据的查询服务中,本发明只会以一个程序来完成查找目标数据的工作,也就是说,本发明所提供的查询目标数据的程序会依据使用者所输入的输入项目产生查询语法并查找出目标数据。其中,目标数据是使用者欲查找的数据。以下先以图IA本发明所提供的依据输入数据产生查询语法的系统架构图来说明本发明的系统运作。如图IA所示,本发明的系统含有储存模块110、接收模块130、语法生成模块150、查询模块160以及输出模块170。储存模块110负责储存基本语法,储存模块110所储存的基本语法为完整或部分的数据库查询语法,也就是至少包含「select」以及「from」等保留字的数据库查询语法,例如完整的数据库查询语法「selectname,calorie,unitformfoods」或缺少数据表名称的部分数据库查询语法「selectname,calorie,unitfromwherecalorie>0orderbynameJ(缺少数据表名称)等,但基本语法并不以上述两者为限。储存模块110也负责储存查询界面,储存模块110所储存的查询界面是提供使用者查询特定的数据,如图2所示,为一热量查询的查询界面200,查询界面200提供使用者查询与食物具有的热量以及运动所消耗的热量等与热量有关的资料。随着执行本发明的装置不同,储存模块110中所储存的查询界面也会有所不同。例如,当执行本发明的装置为网页服务器时,查询界面将为网页,也就是储存模块110储存网页的原始码,而当执行本发明的装置为个人计算机或PDA等时,查询界面通常为执行于装置上的应用程序所显示的使用者界面,储存模块110将储存显示使用者界面所需的设定信息。但查询界面并不以网页或应用程序所显示的使用者界面为限,执行本发明的装置也不以网页服务器、个人计算机或PDA为限。储存模块110所储存的查询界面中包含一个以上的输入项目,查询界面所包含的输入项目包含但不限于连结(link)、文字输入区块、按键(button)、下拉式选单、单选钮(radio)、多选框(chedcbox)等,是用以提供使用者改变被输出模块170输出的目标数据的内容或排列顺序等,但输入项目并不以此为限。例如,如图2所示查询界面200,其中包含连结形式的输入项目211、输入项目212以及输入项目215、文字输入区块形式的输入项目221以及输入项目222、按键形式的输入项目231以及输入项目237、下拉式选单形式的输入项目Ml、单选钮形式的输入项目251以及输入项目252等,使用者可以在输入项目221上输入欲查找的食物的名称,藉以查询该食物的热量,或是在输入项目241上选择排序食物的方式,藉以改变被输出模块170输出的目标数据的排列顺序。值得一提的是,查询界面所包含的输入项目都定义有相对应的项目参数,且输入项目与相对应的项目参数为一对一或多对一的对应关。输入项目与项目参数的对应关系通常是由开发人员在本发明被开发时定义。一般而言,项目参数是用来记录被输入到相对应的输入项目中的输入数据,项目参数的名称通常就是相对应的输入项目的名称,但本发明并不以此为限,开发人员也可以定义不同的名称。例如,当图2的查询界面200为网页时,输入项目221对应的项目参数为输入项目的标签「〈inputtype=“input"name=〃foodName“...>」中的名称属性,也就是「foodName」,输入数据即为被使用者输入至输入项目221中的数据,例如「迷你南瓜饭」,但本发明所提及的项目参数以及输入数据并不以此为限。接收模块130负责接收与查询界面所包含的输入项目对应的输入数据。由于输入数据与输入项目对应,且输入项目与项目参数具有对应关系,所以输入数据也会与项目参数对应。随着执行本发明的装置不同,接收模块130接收输入数据的方式也不相同。例如,当执行本发明的装置为使用者无法直接操作的远程主机时,接收模块130会如图IB所示,通过网络接收由客户端400所传送的输入数据,在此情况下,使用者是使用客户端400,输入数据是由使用者输入至客户端400中,并由客户端400传送至执行本发明的装置;而当执行本发明的装置为使用者可以直接操作的本地端计算机时,接收模块130会直接接收到使用者所输入的输入数据。语法生成模块150负责依据项目参数、输入数据及基本语法生成查询语法,被语法生成模块150产生的查询语法是用来查找数据库中的数据的完整数据库查询语法,除了包含「select」以及ΓfromJ两个保留字之外,还可能包含「where」、ΓorderbyJ等保留字,但查询语法并不以此为限。语法生成模块150可以先依据项目参数以及输入数据产生附加语法后,再将附加语法合并到基本语法后产生出查询语法。若查询界面200如图2所示,假设与输入项目241对应的项目参数为「sequence」,则当使用者期待目标数据以笔划数排序时,会点击输入项目241并选择「按笔划」的项目,如此,接收模块130会接收到与输入项目241对应的输入数据「strokenum」,因此语法生成模块150会执行如图3所示的程序代码370,依据项目参数「sequence」产生包含输入数据Γstrokenumj的附加语法「orderbystrokenum」,之后,语法生成模块150会将附加语法「orderbystrokenum」合并至Ij基本语法「selectname,calorie,unitfromItemCaloriewhere1=1」,最后,产生查询语法「selectname,calorie,unitfromItemCaloriewhere1=1orderbystrokenum」,如图4A所示的程序代码301。另外,假设与输入项目221以及输入项目251对应的项目参数分别为「searchname」以及「isblur」,则当使用者在输入项目221中输入「迷你南瓜饭」的输入数据,并选择输入项目251以输入相对应的输入数据「0」,则语法生成模块150会执行如图3所示的程序代码321,也就是依据与输入项目251对应的项目参数「isblur」判断生成附加语法的种类,由于与输入项目251对应的输入参数为「0」,因此语法生成模块150会进一步执行程序代码332,也就是依据项目参数「searchnameJ,产生包含输入数据「迷你南瓜饭」的附加语法「andname=‘迷你南瓜饭'」,并合并到基本语法之后,产生查询语法「selectname,calorie,unitfromItemCaloriewhere1=1andname=‘迷你南瓜饭'」。但语法生成模块150依据项目参数以及输入数据产生附加语法的方式并不以上述为限。语法生成模块150也可以依据项目参数插入对应输入数据的语法片段至基本语法中,藉以产生查询语法,一般而言,被语法生成模块150插入基本语法中的语法片段是可使基本语法成为可被用来查询数据的查询语法的字符串。假设与输入项目212对应的项目参数为「table」,则当使用者点击输入项目212后,接收模块130会接收到与输入项目212对应的输入数据「i^ood」,因此语法生成模块150会依据项目参数「table」,产生与输入数据「Food」对应的语法片段「Food」,之后,语法生成模块150会将语法片段插入由「selectname,calorie,unitfrom」以及「where1=Ij组成的基本语法之间,藉以产生查询语法「selectname,calorie,unitfromFoodwhere1=1」的查询语法,如图4B的程序代码302所示。其中,输入数据以及语法片段并不一定相同,例如当输入资料为「Food」以及「ItemCalorie」时,语法片段可以是「FoodfjoinItemCalorieiconf.id=ic.fid」等。但语法生成模块150插入语法片段的方式并不以此为限,例如也可以取代基本语法中的特定字符串的方式插入语法片段。查询模块160负责以语法生成模块150产生的查询语法查找目标数据。查询模块160所查找出的目标数据会随着查询语法变化。一般而言,查询模块160会至储存模块110中查找目标数据,但若储存模块110中没有储存查询模块160查找目标数据的内容,则查询模块160也可以联机到执行本发明的装置外的远程数据库(图中未示)中查找目标数据。查询模块160也可以依据预定的参数,到相对应的储存模块110或是远程数据库等预定的目标中查找目标数据。输出模块170负责提供储存模块110所储存的查询界面,以及负责输出查询模块160所查找出的目标数据。随着执行本发明的装置不同,输出模块170会以不同的方式输出查询界面以及目标数据。例如,当执行本发明的装置为使用者无法直接操作的远程主机时,输出模块170会如图IB所示,通过网络传送查询界面以及目标数据至客户端400;而当执行本发明的装置为使用者可以直接操作的本地端计算机时,输出模块170会直接在计算机上显示查询界面,并显示目标数据于查询界面中。接着以第一实施例来解说本发明的运作系统与方法,并请参照图5A及图5B本发明所提供的依据输入数据产生查询语法的方法流程图。在本实施例中,假设执行本发明的装置为网页服务器,但执行本发明的装置并不以此为限。由于执行本发明的装置为网页服务器,因此输出模块170实际上提供数据传送的功能。在网页服务器以本发明提供数据查询服务之前,网页服务器中的储存模块110储存如图4B所示的包含由「selectname,calorie,unitfrom」以及「where1=1」组成的基本语法的程序代码302(步骤501),以及如图2所示的查询界面200的网页原始码,但储存模块110所储存的基本语法以及查询界面并不以此为限。如图IB所示,当使用者操作客户端400向执行本发明的网页服务器发出下载查询界面200的请求时,网页服务器中的输出模块170会传送查询界面200至客户端400,藉以提供查询界面200给使用者使用(步骤510)。在客户端400接收到网页服务器所传送的查询界面200后,会在浏览器中显示查询界面200给使用者进行数据查询的操作。在本实施例中,查询界面200包含连结形式的输入项目(输入项目211、输入项目212以及输入项目21、包含文字输入区块形式的输入项目(输入项目221以及输入项目222)、包含按键形式的输入项目(输入项目231以及输入项目237)、包含下拉式选单形式的输入项目Ml、包含单选钮形式的输入项目(输入项目251以及输入项目252)、以及包含未被显示的输入项目,但本发明所提及的包含于查询界面中的输入项目并不以此为限。在客户端400接收到网页服务器所传送的查询界面200后,会显示查询界面200给使用者进行数据查询的操作。假设在查询界面200中,与输入项目215所对应的项目参数为「strokenum」,与输入项目221、输入项目222、输入项目241所对应的项目参数分别为「name」、「date」、「sequence」,与输入项目237对应的项目参数为「page」,与输入项目251以及输入项目252所对应的项目参数都为「isblur」,与未被显示的输入项目对应的项目参数为「table」,但查询界面200中的输入项目并不以此为限。若使用者欲查询食物名称中第一个字的笔划数为十划的所有食物,则使用者需要在查询界面200中先点击(click)代表查询食物的输入项目212,使得查询界面200如图2所示,接着需要点击代表查询首字为十划的食物的输入项目215,假设输入项目215的原始码为r<ahref="...?type=Food&strokenum=10"...>10</a>」,则在输入项目215被点击后,客户端400会将未被显示于查询界面200中的输入项目所对应的输入数据「Food」以及对应输入项目215的输入数据「10」一起传送到网页服务器,如此,网页服务器中的接收模块130会接收到与未被显示的输入项目对应的输入数据「Food」以及与输入项目215对应的输入数据「10」(步骤520)。之后,语法生成模块150会依据项目参数以及输入数据产生附加语法,并合并基本语法与附加语法为查询语法(步骤530)。在本实施例中,语法生成模块150会如图4B的程序代码302所示,先将与未被显示的输入项目相对应的输入数据「Food」记录到与未被显示的输入项目对应的项目参数「table」中,藉以产生与输入数据对应(相同)的语法片段「Food」(步骤531),而后,语法生成模块150会依据项目参数在程序代码302的基本语法中的位置,将语法片段「Food」插入基本语法中(步骤53,产生暂时的查询语法「selectname,calorie,unitformFoodwhereI=Ij0接着,语法生成模块150会执行如图3的程序代码,当语法生成模块150执行到程序代码340时,会依据与输入项目215对应的项目参数「strokenum」以及与输入项目215对应的输入数据「10」,产生附加语法「andstrokenum=10」(步骤535),并将附加语法「andstrokenum=10」合并至丨J暂时的查询语法「selectname,calorie,unitfromFoodwhere1=1」,藉以产生查询语法「selectname,calorie,unitfromFoodwhere1=1andstrokenum=10」(步骤536)。在本实施例中,由于语法生成模块150需要对基本语法进行两次处理,故会产生暂时的查询语法,语法生成模块150会将暂时的查询语法视为基本语法。同样的,若语法生成模块150需要对基本语法进行两次以上的处理,则语法生成模块150会在每一次处理后产生新的暂时的查询语法,藉以提供后续使用。但语法生成模块150产生查询语法的方式并不以此为限,例如也可以先产生语法片段「Food」以及附加语法「andstrokenum=10」后,先后将语法片段插入基本语法以及将附加语法与基本语法合并。在语法生成模块150依据项目参数以及输入数据产生附加语法并合并基本语法与附加语法为查询语法(步骤530)后,查询模块160会以语法生成模块150产生的查询语法查找目标数据(步骤阳0),假设查询模块160会依据预定的参数,到预定的目标中查找目标数据,则当预定的参数对应储存模块110时,查询模块160会至储存模块110中查找目标数据,但查询模块160查找目标数据的方式并不以此为限。在查询模块160以查询语法查找目标数据(步骤550)后,输出模块170会输出目标数据(步骤560)。在本实施例中,输出模块170会将查询模块160查找出的目标数据传送到客户端400,藉以提供客户端400在查询界面200中显示目标数据,使得使用者可以在查询界面200中观看到名称中第一个字的笔划数为十划的所有食物。若使用者在浏览目标数据时,点击输入项目237,假设输入项目237的原始码为「〈inputtype=“submit"onclick=“javascript...page,value=5">」,贝Ij客户端400会将对应输入项目212的输入数据「Food」以及对应输入项目237的输入数据「5」一起传送到网页服务器,如此,网页服务器中的接收模块130会接收到与输入项目212对应的输入数据「Food」以及与输入项目237对应的输入数据「5」(步骤520)。之后,语法生成模块150会依据项目参数以及输入数据产生附加语法,并合并基本语法与附加语法为查询语法(步骤530)。在本实施例中,语法生成模块150会先产生暂时的查询语法「selectname,calorie,unitformFoodwhere1=1」,并如图3的程序代码390所示,依据与输入项目237对应的项目参数「page」与输入项目237对应的输入数据「5」产生附加语法「whererownum>=80andrownum<96J(步骤535),并将附加语法合并至Ij暂时的查询语法,藉以产生查询语法「selectname,calorie,unitfromFoodwhere1=lwhererownum>=80andrownum<96」(步骤536)。接着,查询模块160会查询目标数据(步骤550),并由输出模块170传送到客户端400(步骤560),使得使用者可以在客户端400上观看到下一页的16项食物。由本实施例可知,即使使用者以不同的输入项目查找数据,本发明都可以语法生成模块150产生查询语法,也就是说,使用本发明便可以仅以一个服务程序提供数据查找的服务。以下再以第二实施例来解说本发明的运作系统与方法,同样请继续参照图5A。在本实施例中,假设执行本发明的装置为本地端计算机,但执行本发明的装置并不以此为限。由于执行本发明的装置为网页服务器,因此输出模块170实际上提供数据显示的功能。本实施例与第一实施例相似,计算机中的储存模块110会储存如图4A所示的基本语法(步骤501),以及如图2所示的查询界面200,但储存模块110所储存的基本语法以及查询界面并不以此为限。当使用者在计算机上执行数据查询的应用程序时,计算机中的输出模块170会显示查询界面200,藉以提供查询界面200给使用者使用(步骤510)。若使用者操作计算机在输入项目222中输入「2009/08/28」的输入数据,以期希望能够查询被建立的时间在「2009/08/28」之前的数据,则接收模块130会接收到与输入项目222对应的输入数据Γ2009/08/28J(步骤520)。之后,语法生成模块150会依据项目参数以及输入数据产生附加语法,并合并基本语法与附加语法为查询语法(步骤530)。在本实施例中,语法生成模块150会如图3的程序代码350所示,依据与输入项目222对应的项目参数「date」与输入项目222对应的输入数据「2009/08/28」产生附加语法「and(create_date-to_date(‘2009/08/28‘,‘YYYY-MM-DDhh24:mi:ss‘))>=0」(步骤535),并将附加语法合并到基本语法,藉以产生查询语法「selectname,calorie,unitfromItemCaloriewhere1=1and(create_date-to_date('2009/08/28','YYYY-MM-DDhh24:mi:ss'))>=0」(步骤536)。接着,查询模块160会查询目标数据(步骤550),并由输出模块170显示目标数据(步骤560),使得使用者可以在计算机上观看到被建立的时间在「2009/08/28」的目标数据。综上所述,可知本发明与现有技术之间的差异在于具有依据预存的基本语法、与查询界面中的输入项目对应的项目参数、以及被输入至相对应的输入项目的输入数据产生查询语法后,以查询语法查找目标数据的技术手段,藉由此一技术手段可以解决现有技术所存在为不同的查询语法建立相对应的数据库存取服务会浪费服务主机的资源的问题,进而达成减少相似的程序代码、及降低程序代码维护复杂度的技术功效。再者,本发明的依据输入数据产生查询语法的方法,可实现于硬件、软件或硬件与软件的组合中,亦可在计算机系统中以集中方式实现或以不同组件散布于若干互连的计算机系统的分散方式实现。虽然本发明所公开的实施方式如上,惟所述的内容并非用以直接限定本发明的专利保护范围。任何本发明所属
技术领域
中的技术人员,在不脱离本发明所公开的精神和范围之前提下,对本发明的实施的形式上及细节上作些许的更动润饰,均属于本发明的专利保护范围。本发明的专利保护范围,仍须以所附的权利要求书所界定者为准。权利要求1.一种依据输入数据产生查询语法的方法,该方法至少包含下列步骤储存一基本语法;提供包含至少一输入项目的一查询界面,该输入项目对应一项目参数;接收对应该输入项目的一输入数据;依据该项目参数及该输入数据产生一附加语法,并合并该基本语法及该附加语法为一查询语法;以该查询语法查找一目标数据;及输出该目标数据。2.如权利要求1所述的依据输入数据产生查询语法的方法,其中该提供包含该输入项目的该查询界面的步骤是提供包含该输入项目的网页,该接收对应该输入项目的一输入数据的步骤是接收一客户端所传送的该输入数据,该输出该目标数据的步骤是传送该目标数据至该客户端。3.如权利要求1所述的依据输入数据产生查询语法的方法,其中该依据该项目参数、该输入数据及该基本语法产生该查询语法的步骤是产生对应该输入数据的一语法片段,并依据该项目参数插入该语法片段至该基本语法中。4.如权利要求1所述的依据输入数据产生查询语法的方法,其中该以该查询语法查找该目标数据的步骤是以该查询语法至一远程数据库查询该目标数据。5.一种依据输入数据产生查询语法的系统,应用于一装置上,该系统至少包含一储存模块,用以储存一基本语法,及储存一查询界面,该查询界面包含至少一输入项目,该输入项目对应一项目参数;一接收模块,用以接收对应该输入项目的一输入数据;一语法生成模块,用以依据该项目参数及该输入数据产生一附加语法,并合并该基本语法及该附加语法为一查询语法;一查询模块,用以以该查询语法查找一目标数据;及一输出模块,用以提供该查询界面,及用以输出该目标数据。6.如权利要求5所述的依据输入数据产生查询语法的系统,其中该查询界面是一网页或应用程序的使用者界面。7.如权利要求5所述的依据输入数据产生查询语法的系统,其中该输出模块是传送该查询界面及该目标数据至一客户端,该接收模块是接收该客户端所传送的该输入数据。8.如权利要求5所述的依据输入数据产生查询语法的系统,其中该输出模块于该装置上显示该查询界面及该目标数据。9.如权利要求5所述的依据输入数据产生查询语法的系统,其中该语法生成模块是依据该项目参数插入对应该输入数据的一语法片段至该基本语法中。10.如权利要求5所述的依据输入数据产生查询语法的系统,其中该查询模块是至一远程数据库或该储存模块中查找该目标数据。全文摘要一种依据输入数据产生查询语法的系统及其方法,其通过依据预存的基本语法、与查询界面中的输入项目对应的项目参数、以及被输入至相对应的输入项目的输入数据产生查询语法后,以查询语法查找目标数据的技术手段,可以动态产生存取数据库的查询语法,并达成减少相似的程序代码及降低程序代码维护复杂度的技术功效。文档编号G06F17/30GK102073648SQ20091022410公开日2011年5月25日申请日期2009年11月23日优先权日2009年11月23日发明者方慧,邱全成申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1