CN106844369B - 对象化sql语句构造方法及装置 - Google Patents
对象化sql语句构造方法及装置 Download PDFInfo
- Publication number
- CN106844369B CN106844369B CN201510882493.0A CN201510882493A CN106844369B CN 106844369 B CN106844369 B CN 106844369B CN 201510882493 A CN201510882493 A CN 201510882493A CN 106844369 B CN106844369 B CN 106844369B
- Authority
- CN
- China
- Prior art keywords
- sql
- object class
- preset
- level
- template
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2448—Query languages for particular applications; for extensibility, e.g. user defined types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种对象化SQL语句构造方法及装置,解决了现有的SQL语句拼写错误率高的问题。本发明的主要技术方案为:响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。本发明主要用于构造标准的SQL语句。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种对象化SQL语句构造方法及装置。
背景技术
随着信息技术的迅猛发展,大部分应用都或多或少的基于数据库进行数据的存储和管理。那么这个过程必然涉及SQL(Structured Query Language,结构化查询语言)操作,然而不管采用什么样的数据访问框架,如Hibernate(开放源代码的对象关系映射框架)、iBatis(基于SQL映射支持Java和.NET的持久层框架)等,只要涉及复杂的SQL处理以及和性能相关的优化,必然需要进行定制化SQL语句的构造。
目前,SQL语句的构造过程都是以字符串的形式呈现,且各种语言的编译器都无法捕获上述SQL语句的拼写错误,而SQL语句的拼写错误一直是SQL构造过程中无法避免的问题,在SQL语句发生错误后只有程序运行时才可以发现,如果业务比较复杂那么定位过程是非常耗时的,因此现有查找SQL错误语句的效率低。
发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的构造对象化SQL语句方法及装置。
为达到上述目的,本发明主要提供如下技术方案:
一方面,本发明实施例提供了一种对象化SQL语句构造方法,该方法包括:
响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;
调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;
当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。
另一方面,本发明实施例还提供一种对象化SQL语句构造装置,该装置包括:
响应单元,用于响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;
调取单元,用于调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;
确定单元,用于当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明实施例提供一种对象化SQL语句构造方法及装置,响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。与目前构造的SQL语句都是以字符串的形式表示的相比,本发明实施例通过基于对象化SQL框架快速的构造对象化SQL语句,通过本发明构造的SQL语句可以在语言层面规避常见的拼写错误,并且通过本发明构造的对象化SQL语句的可维护性好,基于对象化SQL框架构造的SQL语句相比大片的字符串SQL更有利于维护。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种对象化SQL语句构造方法流程图;
图2为本发明实施例提供的另一种对象化SQL语句构造方法流程图;
图3为本发明实施例提供的一种对象化SQL语句构造装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
本发明实施例提供了一种对象化SQL语句构造方法,如图1所示,所述方法包括:
S101、响应构造对象化SQL命令,确定第一层级的对象类模板。
其中,所述第一层级的对象类模板中包含多个第一预置SQL对象类,所述第一预置SQL对象类是根据SQL语言的规则预先配置的,第一预置SQL对象类具体可以根据SQL语言中的首个操作命令编写的,所述SQL语言中首个操作命令具体可以为SELECT、DELETE、UPDATE、CREATE、INSERT、DROP等,本发明实施例不做具体限定。
在本发明实施例中,所述构造对象化SQL命令具体可以通过程序编辑界面中输入构造对象化SQL命令,就可以实现输出第一层级的对象类模板,其中第一层级的对象模板中包含有多个第一预置SQL类,如SELECT类、DELETE类和UPDATE类等,本发明实施例不做具体限定。
需要说明的是,对象化SQL语句中的SQL对象类是预先编辑好的,在本发明实施例中可以通过SQL语法进行分类,将SQL语句分成以下几种形式:SQL子句(Select、Where、Joint、GroupBy等等)、运算符、表达式、函数、SQL语句、谓词、表运算和集合运算等,本发明实施例不做具体限定,然后创建这些对象的类,从而使得用户输入对象后SQL语句时,可以直接调用这些类,然后在这些类中填写相应的参数,即可完成对象化SQL语句的构造。
S102、调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类。
在本发明实施例中,当接收到客户端选择的第一预置SQL对象类时,调取并确定第一预置SQL对象类,然后显示所述客户端选择的第一预置SQL对象类。需要说明的是,可以接收客户端选择的一个或多个SQL对象类,如SELECT类、DELETE类和UPDATE类等,本发明实施例不做具体限定。
例如,接收到客户端选择的第一预置SQL对象类为SELECT类,则显示出SELECT类具体如下所示:
SqlSession sesstion=new SqlSession(config);
ISqlExpression sqlExpression=
sesstion.Select(Metadata_Column_PERSON_AGE)
需要说明的是,本例中的SELECT类中的PERSON_AGE是用户端输入的具体表名和字段名。
S103、当接收到第一预置SQL对象类对应的参数时,确定第二层级的对象类模板。
其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。
具体地,对于上述中第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系,可以是基于SQL语言本身逻辑顺序来确定的,例如,SQL语言执行格式、数据对象优先级设置等。
对于本发明实施例,所述参数主要是描述数据属性的信息,具体可以为字段信息对象和表对象;所述参数还可以是SQL条件设置参数、具体设置数值参数等,本发明实施例不做具体限定。
例如,可以通过下述对象化SQL语句表示常规拼写的SQL语句“SELECT age FROMPerson Where age<16”:
SqlSession sesstion=new SqlSession(config);
ISqlExpression sqlExpression=
sesstion.Select(Metadata_Column_PERSON_AGE)
.From(Metadata_Table_PERSON)
.Where(new Predicate(Metadata_Column_PERSON_AGE
,Operators.LessThan,16));
从本例中可以看出,上述对象化SQL语句可以实现常规拼写SQL语句“SELECT ageFROM Person Where age<16”的功能,即从Person表中查找年龄小于16的年龄字段信息,对象化SQL语句通过编程语言中的类进行编写常规SQL语句的,而且编写的对象化构造对象化SQL语句严格按照SQL语法进行,与日常拼写SQL的逻辑一致。
在本发明实施例中,由于是通过类的方式实现SQL语句的编写,因此在编写SQL语句时,可以有效的利用***的编译器对常规的拼写错误进行检查,在编写过程中一旦发生SQL拼写错误,***将会自动报错,因此通过本发明可以从根本上消除基于字符串的SQL拼写错误的问题。
本发明实施例提供一种构造对象化SQL语句方法,响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。与目前构造的SQL语句都是以字符串的形式表示的相比,本发明实施例通过基于对象化SQL框架快速的构造对象化SQL语句,通过本发明构造的SQL语句可以在语言层面规避常见的拼写错误,并且通过本发明构造的对象化SQL语句的可维护性好,基于对象化SQL框架构造的SQL语句相比大片的字符串SQL更有利于维护。
本发明实施例提供了另一种对象化SQL语句构造方法,如图2所示,所述方法包括:
S201、配置SQL中各个词语分别对应的SQL对象类。
其中,SQL(Structured Query Language,结构化查询语言)中的各个词语即为SQL中组成的语句,SQL中组成的语句具体可也为Select、Where、Joint、GroupBy、update等操作命令,也可以为SQL语句中的一些运算符以及表达式,还可以是一些函数、谓词、表运算和集合运算等,本发明实施例不做具体限定。
对于本发明实施例,所述配置SQL中各个词语分别对应的SQL对象类之前,所述方法还包括:按照所述SQL中的语法规则顺序,对所述SQL中的词语进行划分层级,其中,每一层级中至少包括一个词语,从高到低的层级之间的SQL词语顺序关系符合SQL语言本身的逻辑顺序;所述配置SQL中各个词语分别对应的SQL对象类包括:配置SQL中同一层级中的词语分别对应的SQL对象类;为同一层级的SQL对象类配置对应的对象类模板。
S202、当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板。
其中,所述第一层级的对象类模板中包含多个第一预置SQL对象类,所述第一预置SQL对象类是根据SQL语言的规则预先配置的,第一预置SQL对象类具体可以根据SQL语言中的首个操作命令编写的,所述SQL语言中首个操作命令具体可以为SELECT、DELETE、UPDATE、CREATE、INSERT、DROP等,本发明实施例不做具体限定。
在本发明实施例中,所述构造对象化SQL命令具体可以通过程序编辑界面中输入构造对象化SQL命令,就可以实现输出第一层级的对象类模板,其中第一层级的对象模板中包含有多个第一预置SQL类,如选择类SELECT、删除类DELETE和更新类UPDATE等,本发明实施例不做具体限定。
需要说明的是,对象化SQL语句中的SQL对象类是预先编辑好的,在本发明实施例中可以通过SQL语法进行分类,将SQL语句分成以下几种形式:SQL子句(Select、Where、Joint、GroupBy等等)、运算符、表达式、函数、SQL语句、谓词、表运算和集合运算等,本发明实施例不做具体限定,然后创建这些对象的类,从而使得用户输入对象后SQL语句时,可以直接调用这些类,然后在这些类中填写相应的参数,即可完成对象化SQL语句的输入。
S203、当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类。
在本发明实施例中,当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类。需要说明的是,可以接收客户端选择的一个或多个SQL对象类,如SELECT类、DELETE类和UPDATE类等,本发明实施例不做具体限定。
在本发明实施例中,由于是通过对象类的方式实现SQL语句的编写,因此在编写SQL语句时,可以有效的利用***的编译器对常规的拼写错误进行检查,在编写过程中一旦发生SQL拼写错误,***将会自动报错,因此通过本发明可以从根本上消除基于字符串的SQL拼写错误的问题。
S204、当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板。
其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,需要说明的是,本法实施例构造的对象化的SQL语句严格按照SQL语法进行,且与日常拼写SQL的逻辑一致,因此通过对象化的SQL语句表示现有的字符串的SQL语句,可以有效的利用***中的编译器检测出对象化的SQL语句中的拼写错误,从而可从根本上消除基于字符串的SQL拼写错误的问题,进而通过本发明可以提高查找SQL错误语句的效率。
对于本发明实施例,所述参数主要是描述数据属性的信息,具体可以为字段信息对象和表对象;所述参数还可以是SQL条件设置参数、具体设置数值参数等,本发明实施例不做具体限定。
S205、判断是否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句。
在本发明实施例中,若否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则说明构造的对象化SQL语句不存在拼写错误。其中,可以通过***中的构造器将所述对象化SQL语句转换成SQL语句,需要说明的是,本发明中的构造器本身不同于市面上智能化的解析构造装置,它只负责将指定的SQL对象按照用户组织的顺序翻译成标准的或是适用于某一款特定的数据库的SQL语句。
例如:谓词中的比较谓词对象化SQL语句的描述如下:
sesstion.Where(
new ComparisonPredicate
(Metedata_Comlumn_PERSON_AGE,Operators.NotEqual,16))
将上述对象化SQL语句进行翻译,翻译的具体结果为Where age<>16。
需要说明的是,不同于ORM(Object Relational Mapping,对象关系映射),本发明可以根据接收到的对象化SQL语句关系来自动推断用户想要表达的SQL语句,SQL语句的构造完全取决于用户输入的对象化SQL语句,一个资深的SQL领域的程序员可以完全使用这种对象化的SQL类写出基于SQL语言本身所能描述的SQL语句;而一个初次涉猎SQL的程序员则可以写出错误的逻辑表达,这都完全允许的,支持在运行时会产生错误而已。另外,本发明通过提供一个标准的ISqlBuilder接口契约,配合ISqlProvider标准接口,可以对特定数据库进行支持。
S206a、若不能,则输出SQL语法错误提示信息。
在本发明实施例中,若不能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则输出SQL语法错误提示信息。本发明通过***内部的SQL构造器,在运行时对SQL语句进行语法检查,从而可以快速的定位错误。
S206b、若能,则执行所述SQL语句。
其中,步骤S206b为步骤S206a的并列步骤,若能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则执行所述SQL语句。
S207b、记录执行错误的SQL语句。
在本发明实施例中,在执行所述SQL语句时,可以通过映射器让***知道需要将对应查询的字段如何转换为所要查询的实体的属性,***会对每次SQL的执行进行性能的统计,然后记录执行错误的SQL语句,以便于后续的优化。同时也会对象错误的SQL执行过程进行跟踪,便于问题的排查。
本发明实施例提供另一种对象化SQL语句构造方法,当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板,所述第一层级的对象类模板中包含多个第一预置SQL对象类;当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类;当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,其中,第一预置SQL对象类与所述第二预置SQL对象类的顺序关系符合SQL语言本身的逻辑顺序。与目前构造的SQL语句都是以字符串的形式表示的相比,本发明实施例通过基于对象化SQL框架快速的构造对象化SQL语句,通过本发明构造的SQL语句可以在语言层面规避常见的拼写错误,并且通过本发明构造的对象化SQL语句的可维护性好,基于对象化SQL框架构造的SQL语句相比大片的字符串SQL更有利于维护。
进一步地,本发明实施例提供一种对象化SQL语句构造装置,如图3所示,所述装置包括:响应单元31、调取单元32和确定单元33。
响应单元31,用于响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类。
调取单元32,用于调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类。
确定单元33,用于当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的。
需要说明的是,本发明实施例提供的一种对象化SQL语句构造装置所涉及各功能单元的其他相应描述,可以参考图1所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
本发明实施例提供一种对象化SQL语句构造装置,当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板,所述第一层级的对象类模板中包含多个第一预置SQL对象类;当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类;当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,其中,第一预置SQL对象类与所述第二预置SQL对象类的顺序关系符合SQL语言本身的逻辑顺序。与目前构造的SQL语句都是以字符串的形式表示的相比,本发明实施例通过基于对象化SQL框架快速的构造对象化SQL语句,通过本发明构造的SQL语句可以在语言层面规避常见的拼写错误,并且通过本发明构造的对象化SQL语句的可维护性好,基于对象化SQL框架构造的SQL语句相比大片的字符串SQL更有利于维护。
进一步地,本发明实施例提供另一种对象化SQL语句构造装置,具体如下:
输出单元,用于当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类。
显示单元,用于当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类。
所述输出单元,还用于当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的顺序关系符合SQL语言本身的逻辑顺序。
进一步地,所述装置还包括:
配置单元,用于配置所述SQL中各个词语分别对应的SQL对象类。
进一步地所述装置还包括:划分单元。
所述划分单元,用于按照所述SQL中的语法规则顺序,对所述SQL中的词语进行划分层级,其中,每一层级中至少包括一个词语,从高到低的层级之间的SQL词语顺序关系符合SQL语言本身的逻辑顺序。
所述配置单元,具体用于配置SQL中同一层级中的词语分别对应的SQL对象类。
所述配置单元,具体还用于为同一层级的SQL对象类配置对应的对象类模板。
进一步地,所述装置还包括:
所述判断单元,用于判断是否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句。
所述输出单元,还用于若不能将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,输出SQL逻辑错误提示信息。
进一步地,所述装置还包括:
执行单元,若能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则执行所述SQL语句。
记录单元,用于记录执行错误的SQL语句。
需要说明的是,本发明实施例提供的一种对象化SQL语句构造装置所涉及各功能单元的其他相应描述,可以参考图2所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
本发明实施例提供一种对象化SQL语句构造装置,当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板,所述第一层级的对象类模板中包含多个第一预置SQL对象类;当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类;当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,其中,第一预置SQL对象类与所述第二预置SQL对象类的顺序关系符合SQL语言本身的逻辑顺序。与目前构造的SQL语句都是以字符串的形式表示的相比,本发明实施例通过基于对象化SQL框架快速的构造对象化SQL语句,通过本发明构造的SQL语句可以在语言层面规避常见的拼写错误,并且通过本发明构造的对象化SQL语句的可维护性好,基于对象化SQL框架构造的SQL语句相比大片的字符串SQL更有利于维护。
所述对象化SQL语句构造装置包括处理器和存储器,上述输出单元、配置单元、显示单元、划分单元、判断单元、执行单元和记录单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高查找SQL错误语句的效率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:当接收到客户端输入的构造对象化SQL命令时,输出第一层级的对象类模板,所述第一层级的对象类模板中包含多个第一预置SQL对象类;当接收到客户端选择的第一预置SQL对象类时,显示所述客户端选择的第一预置SQL对象类;当接收到客户端输入的与所述第一预置SQL对象类对应的参数时,则输出第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的顺序关系符合SQL语言本身的逻辑顺序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (6)
1.一种对象化SQL语句构造方法,其特征在于,包括:
按照SQL中的语法规则顺序,对所述SQL中的词语进行划分层级,其中,每一层级中至少包括一个词语,从高到低的层级之间的SQL词语顺序关系符合SQL语言本身的逻辑顺序;
配置SQL中同一层级中的词语分别对应的SQL对象类;
为同一层级的SQL对象类配置对应的对象类模板;
响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类; 其中,所述第一预置SQL对象类是通过SQL语法进行分类的,将SQL语句分成SQL子句、运算符、表达式、函数、SQL语句、谓词、表运算、集合运算,然后创建这些对象的类;
调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;
当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的;
判断是否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句;
若不能,则输出SQL逻辑错误提示信息。
2.根据权利要求1所述的方法,其特征在于,所述判断是否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句之后,所述方法还包括:
若能,则执行所述SQL语句;
记录执行错误的SQL语句。
3.一种对象化SQL语句构造装置,其特征在于,包括:
响应单元,用于响应构造对象化SQL命令,确定第一层级的对象类模板;其中,所述第一层级的对象类模板中包含至少一个第一预置SQL对象类;其中,所述第一预置SQL对象类是通过SQL语法进行分类的,具体为,将SQL语句分成SQL子句、运算符、表达式、函数、SQL语句、谓词、表运算、集合运算,然后创建这些对象的类;
调取单元,用于调取所述至少一个第一预置SQL对象类,确定所述至少一个第一预置SQL对象类;
确定单元,用于当接收到所述第一预置SQL对象类对应的参数时,确定第二层级的对象类模板,其中,所述第二层级的对象类模板中至少包含一个第二预置SQL对象类,第一预置SQL对象类与所述第二预置SQL对象类的逻辑关系是根据SQL语言属性规则确定的;
其中,所述装置还包括:划分单元;
所述划分单元,用于按照所述SQL中的语法规则顺序,对所述SQL中的词语进行划分层级,其中,每一层级中至少包括一个词语,从高到低的层级之间的SQL词语顺序关系符合SQL语言本身的逻辑顺序;
配置单元,具体用于配置SQL中同一层级中的词语分别对应的SQL对象类;
所述配置单元,具体还用于为同一层级的SQL对象类配置对应的对象类模板;
判断单元,用于判断是否能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句;
输出单元,用于若不能将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则输出SQL逻辑错误提示信息。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:
执行单元,若能够将所述第一预置SQL对象类和所述第二预置SQL对象类转换成SQL语句,则执行所述SQL语句;
记录单元,用于记录执行错误的SQL语句。
5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求2中任意一项所述的对象化SQL语句构造方法。
6.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至权利要求2中任意一项所述的对象化SQL语句构造方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510882493.0A CN106844369B (zh) | 2015-12-03 | 2015-12-03 | 对象化sql语句构造方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510882493.0A CN106844369B (zh) | 2015-12-03 | 2015-12-03 | 对象化sql语句构造方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844369A CN106844369A (zh) | 2017-06-13 |
CN106844369B true CN106844369B (zh) | 2020-12-29 |
Family
ID=59149691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510882493.0A Active CN106844369B (zh) | 2015-12-03 | 2015-12-03 | 对象化sql语句构造方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844369B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622080B (zh) * | 2017-07-28 | 2020-10-30 | 创新先进技术有限公司 | 一种数据处理方法及设备 |
CN110020072A (zh) * | 2017-09-30 | 2019-07-16 | 北京国双科技有限公司 | 一种基于Elasticsearch的数据处理方法及终端 |
CN109508182B (zh) * | 2018-09-18 | 2022-05-17 | 广州虎牙信息科技有限公司 | 快速生成指令的方法、服务器以及计算机存储介质 |
CN109522324A (zh) * | 2018-11-02 | 2019-03-26 | 平安医疗健康管理股份有限公司 | 一种sql脚本生成方法、装置及计算机设备 |
CN111737233A (zh) * | 2020-06-24 | 2020-10-02 | 浙江大华技术股份有限公司 | 数据监控方法及装置 |
CN117251473B (zh) * | 2023-11-20 | 2024-03-15 | 摩斯智联科技有限公司 | 车辆数据查询分析方法、***、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905982A (en) * | 1997-04-04 | 1999-05-18 | International Business Machines Corporation | Handling null values in SQL queries over object-oriented data |
CN103617273A (zh) * | 2013-12-05 | 2014-03-05 | 用友软件股份有限公司 | Sql脚本对象化的方法及*** |
CN103914290A (zh) * | 2012-12-31 | 2014-07-09 | 杭州勒卡斯广告策划有限公司 | 一种操作命令处理方法及装置 |
-
2015
- 2015-12-03 CN CN201510882493.0A patent/CN106844369B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905982A (en) * | 1997-04-04 | 1999-05-18 | International Business Machines Corporation | Handling null values in SQL queries over object-oriented data |
CN103914290A (zh) * | 2012-12-31 | 2014-07-09 | 杭州勒卡斯广告策划有限公司 | 一种操作命令处理方法及装置 |
CN103617273A (zh) * | 2013-12-05 | 2014-03-05 | 用友软件股份有限公司 | Sql脚本对象化的方法及*** |
Non-Patent Citations (1)
Title |
---|
MyBatis 3用户指南;srtillery1029;《百度文库:https://wenku.***.com/view/37a0990a76c66137ee06195d.html?rec_flag=default&sxts=1566807365422》;20120218;第1-56页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106844369A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844369B (zh) | 对象化sql语句构造方法及装置 | |
CN107491485B (zh) | 生成执行计划的方法、计划单元装置和分布式NewSQL数据库*** | |
CN106897322B (zh) | 一种数据库和文件***的访问方法和装置 | |
US20170083573A1 (en) | Multi-query optimization | |
WO2023151543A1 (zh) | 基于结构化查询语言sql的查询方法和*** | |
US9009175B2 (en) | System and method for database migration and validation | |
CN107622080B (zh) | 一种数据处理方法及设备 | |
WO2021253641A1 (zh) | 着色语言翻译方法 | |
US9104724B2 (en) | Dynamic bridging of application and data servers | |
CN110555035A (zh) | 一种对查询语句进行优化的方法、装置 | |
US10423416B2 (en) | Automatic creation of macro-services | |
CN109657803A (zh) | 机器学习模型的构建 | |
CN105867886B (zh) | 一种写表格的方法及装置 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
CN112182637A (zh) | 一种安全控制***、方法、装置及存储介质 | |
CN112181951B (zh) | 一种异构数据库数据迁移方法、装置及设备 | |
US10678514B2 (en) | Method and device for generating code assistance information | |
CN109376154B (zh) | 数据读取、写入方法及数据读取、写入*** | |
CN113448969B (zh) | 数据处理方法、设备及存储介质 | |
CN113448942B (zh) | 数据库访问方法、装置、设备及存储介质 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
WO2019144852A1 (zh) | 一种新型计算机编程语言 | |
US9910616B2 (en) | Dynamic data access | |
CN114116773A (zh) | 一种结构化查询语言sql文本审核方法及装置 | |
CN105677652B (zh) | 一种数据管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |