CN107239484A - 数据库操作方法、装置和计算机设备 - Google Patents
数据库操作方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN107239484A CN107239484A CN201710250109.4A CN201710250109A CN107239484A CN 107239484 A CN107239484 A CN 107239484A CN 201710250109 A CN201710250109 A CN 201710250109A CN 107239484 A CN107239484 A CN 107239484A
- Authority
- CN
- China
- Prior art keywords
- identifier
- class
- database manipulation
- function
- value
- 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.)
- Pending
Links
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/245—Query processing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种数据库操作方法、装置和计算机设备,该方法包括:通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据所述标识符对象所赋的值确定函数输入量;调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。本申请可以减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及数据库技术领域,尤其涉及一种数据库操作方法、装置和计算机设备。
背景技术
结构化查询语言(SQL,Structured Query Language)是一种适用于数据库操作的编程语言。按照结构化查询语言的语法结构,可编写结构化查询语言语句,不同的结构化查询语言语句可实现不同的数据库操作,如在数据库中添加、删除、修改以及查询数据等。
然而,在开发环境下的软件开发过程中,编写结构化查询语言语句一般采用字符串拼接的方式,比如“SELECT*FROM XXX WHERE XXX”,开发环境视结构化查询语言语句为一般的字符串,并不会提供拼写或者语法检查等差错能力,通常需要人工检查结构化查询语言语句,导致需要结构化查询语言语句的程序开发效率低下。
发明内容
基于此,有必要针对目前需要结构化查询语言语句的程序开发效率低下的问题,提供一种数据库操作方法、装置和计算机设备。
一种数据库操作方法,包括:
通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;
根据所述标识符对象所赋的值确定函数输入量;
调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;
根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。
一种数据库操作装置,包括:
标识符类应用模块,用于通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据所述标识符对象所赋的值确定函数输入量;
数据库操作类应用模块,用于调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;
数据库操作模块,用于根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。
一种计算机设备,包括存储器和处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行所述数据库操作方法的步骤。
上述数据库操作方法、装置和计算机设备,将结构化查询语言中的关键字封装为数据库操作类中的关键字函数,将结构化查询语言中的标识符封装为标识符类。在开发环境下,引用数据库操作类和标识符类后,就可以使用标识符类生成赋值的标识符对象,并利用数据库操作类中的关键字函数和标识符对象直接实现相应结构化查询语言语句的数据库操作。由于开发环境会对基于函数的代码进行错误检查,可减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
附图说明
图1为一个实施例中应用数据库操作方法的计算机设备的结构示意图;
图2为一个实施例中数据库操作方法的流程示意图;
图3为一个实施例中SQLite的语法树的示意图;
图4为一个实施例中SQLite的语法树中一个语法分支的语法树的示意图;
图5为一个实施例中通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象的步骤的流程示意图;
图6为一个实施例中标识符expr的语法树的示意图;
图7为一个实施例中数据库操作基类和一个数据库操作类的关系示意图;
图8为一个实施例中数据库操作装置的结构框图;
图9为一个实施例中标识符类应用模块的结构框图;
图10为一个实施例中数据库操作类应用模块的结构框图;
图11为另一个实施例中数据库操作类应用模块的结构框图;
图12为另一个实施例中数据库操作装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中计算机设备的内部结构示意图。参照图1,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器、显示屏和输入装置。其中,该计算机设备的非易失性存储介质可存储操作系统,还可存储计算机可读指令,该计算机可读指令被执行时,可使得处理器执行一种数据库操作方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种数据库操作方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。触摸层和显示屏构成触控屏。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中数据库操作方法的流程示意图。本实施例主要以该方法应用于上述图1中的计算机设备来举例说明,具体在计算机设备上运行的面向对象的编程语言的开发环境下实现该数据库操作方法。面向对象的编程语言比如C++、Objective-C或者Java等。参照图2,该数据库操作方法具体包括如下步骤:
S202,通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象。
其中,标识符(Token)是构成结构化查询语言语句的元素,是标识数据库对象的数据,如数据库名称、表名或者用于限定查询条件的表达式等。不同类型的标识符在结构化查询语言中具有不同的标识符语法,该标识符语法表示相应的标识符在构成结构化查询语言语句时应当符合的语法规则。
类是面向对象的编程语言中的概念,是创建对象的模板。一个类可以创建多个对象,每个对象都是类的一个变量。创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。标识符类则是封装了标识符语法的类,其中定义了标识符语法代码。
在一个实施例中,计算机设备可引用标识符类,通过标识符类中定义的构造函数,按照构造函数中定义的标识符语法代码,创建标识符对象,并为该标识符对象赋值。
其中,构造函数的函数名可以与标识符类的类名相同。标识符类中可定义多种对象创建方式,计算机设备可根据所赋值的类型选择相匹配的对象创建方式创建标识符对象并赋值。
在一个实施例中,计算机设备可在创建标识符对象之后,为创建的标识符对象赋值。在一个实施例中,计算机设备可在创建标识符对象时传入待赋予标识符对象的值,从而创建赋该值的标识符对象。这里的值可以是数字、字符串、逻辑值或者另一个对象。
S204,根据标识符对象所赋的值确定函数输入量。
其中,函数输入量是用于输入到函数中的量。
在一个实施例中,计算机设备可将标识符对象所赋的值直接作为函数输入量。在一个实施例中,计算机设备可将标识符对象所赋的值进行运算后作为函数输入量。在一个实施例中,计算机设备可将不同的标识符对象所赋的值分别作为不同的函数输入量。
在一个实施例中,步骤S204包括:获取赋值的常变量;根据标识符对象所赋的值和常变量所赋的值确定函数输入量。具体地,计算机设备可将常变量所赋的值和标识符对象所赋的值进行运算后作为函数输入量。计算机设备还可以将标识符对象所赋的值和常变量所赋的值分别确定为不同的函数输入量。
S206,调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
其中,关键字(Keyword,也可称为关键词)是构成结构化查询语言语句的另一种元素,是标识对数据库处理动作的字符串,比如SELECT、FROM、WHERE或者IN等。关键字函数是封装了关键字语法的函数,其中封装了相应的关键字语法代码,该关键字语法代码表示相应的关键字在构成结构化查询语言语句时应当符合的语法规则。
在一个实施例中,计算机设备可访问数据库操作类,并访问该数据库操作类中定义的关键字函数,以实现对该关键字函数的调用,从而将函数输入量输入该关键字函数。
S208,根据关键字函数所定义的关键字语法代码和函数输入量,执行相应结构化查询语言语句的数据库操作。
在一个实施例中,计算机设备可生成与关键字函数对应的关键字,按照关键字函数所定义的关键字语法代码,将关键字和函数输入量拼接,得到相应结构化查询语言语句,从而通过该相应结构化查询语言语句来实现数据库操作。
在一个实施例中,计算机设备可直接根据关键字函数所定义的关键字语法代码和函数输入量进行编译,得到与编译相应结构化查询语言语句后相同的计算机指令,通过该计算机指令来实现数据库操作。
在一个实施例中,数据库可以是SQLite。SQLite是一种广泛应用于移动终端或者计算机等领域的轻量级嵌入式文件数据库,开发者通过字符串拼接构成的结构化查询语言语句对数据库进行操作。
上述数据库操作方法,将结构化查询语言中的关键字封装为数据库操作类中的关键字函数,将结构化查询语言中的标识符封装为标识符类。在开发环境下,引用数据库操作类和标识符类后,就可以使用标识符类生成赋值的标识符对象,并利用数据库操作类中的关键字函数和标识符对象直接实现相应结构化查询语言语句的数据库操作。由于开发环境会对基于函数的代码进行错误检查,可减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
举例说明,图3示出了SQLite的语法树sql-stmt(其中stmt表示statement),语法树中的箭头表示结构化查询语言中个元素构成结构化查询语言语句的路径。其中EXPLAIN、QUERY以及PLAN等用圆角框表示的是关键字。语法树中按照箭头走向可以构成结构化查询语言语句,比如alter-table-stmt、EXPLAIN alter-table-stmt以及EXPLAIN QUERY PLANalter-table-stmt等够可以构成结构化查询语言语句。
参照图3,alter-table-stmt、analyze-stmt、attach-stmt、begin-stmt、commit-stmt、create-index-stmt、create-table-stmt、create-trigger-stmt、create-view-stmt、create-virtual-table-stmt、delete-stmt、delete-stmt-limited、detach-stmt、drop-index-stmt、drop-table-stmt、drop-trigger-stmt、drop-view-stmt、insert-stmt、pragma-stmt、reindex-stmt、release-stmt、rollback-stmt、savepoint-stmt、select-stmt、update-stmt、update-stmt-limited和vacuum-stmt是语法树sql-stmt的语法分支,每个语法分支对应一种数据库操作,比如delete-stmt用于删除数据库中的数据,insert-stmt用于在数据库中插入数据等。每一个语法分支封装成独立的数据库操作类。
再参照图4,select-stmt可继续展开,形成该语法分支的语法树。语法分支的语法树包括关键字和标识符。其中关键字比如WITH、RECURSIVE、SELECT、DISTINCT、ALL、FROM、WHERE、GROUP、BY、HAVING、VALUES、ORDER、BY、LIMIT以及OFFSET。标识符比如图4中用矩形框表示的common-table-expression、result-column、table-or-subquery、join-clause、expr(表达式)、compround-operator以及ordering-term,每个标识符可继续展开为相应的语法树。select-stmt封装而成的数据库操作类中,每个关键字被封装成关键字函数。select-stmt的语法树中的标识符封装为独立的类,形成标识符类,比如Expr。
进一步地,将数据库操作类和标识符类构成类库,在开发环境中引用,就可以直接使用数据库操作类和标识符类,通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据标识符对象所赋的值确定函数输入量;调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数;根据关键字函数所定义的关键字语法代码和函数输入量,执行相应结构化查询语言语句的数据库操作每个标识符封装为相应的标识符类。
如图5所示,在一个实施例中,步骤S202包括如下步骤:
S502,获取待赋予标识符对象的值的类型。
其中,待赋予标识符对象的值,是待创建的标识符对象需赋予的值。待赋予标识符对象的值的类型,可以是数字类型、逻辑值类型、字符串类型、二进制类型、空类型或者时间类型等。
S504,通过引用的标识符类中的通用模板,生成与值的类型相匹配的标识符语法代码。
其中,通用模板是生成适用标识符对象不同类型的值的标识符语法代码的统一模板。与值的类型相匹配的标识符语法代码,是能够处理具有该类型的值的标识符对象的代码。
具体地,计算机设备可将待赋予标识符对象的值的类型输入到通用模板,由通用模板产生与值的类型相匹配的标识符语法代码。
S506,根据生成的标识符语法代码生成赋类型的值的标识符对象。
举例说明,标识符类Expr的通用模板如下代码所示:
其中,对于数字类型T,当std::is_arithmetic<T>::value为真(TRUE)时,代表T为数字类型,可通过通用模板偏特化为数字类型的代码实现。
上述实施例中,通过通用模板,可以利用标识符类生成赋所需类型的值的标识符对象,提高了兼容性。
在一个实施例中,步骤S204包括:根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将运算所生成值赋予通过相同的标识符类生成的标识符对象。
具体地,计算机设备可通过相同的标识符类生成不同的标识符对象,每个标识符对象赋予相应的值,将不同的标识符对象的值进行运算,得到运算所产生的值。
进一步地,计算机设备可以将该运算所产生的值赋予参与该运算的其中一个标识符对象,将运算所生成值赋予通过相同的标识符类生成的标识符对象。
在一个实施例中,计算机设备也可以将该运算所生成值作为待赋予标识符对象的值,通过前述相同的标识符类再生成赋予该待赋予标识符对象的值的标识符对象。在一个实施例中,计算机设备也可以将该运算所生成值直接赋予另一个已通过前述相同的标识符类生成的标识符对象。
举例说明,标识符expr的语法树如图6所示,其中NOT、LIKE、GLOB、REGEXP、MATCH以及ESCAPE都是expr的语法树中使用的关键字。相应的标识符类Expr中定义的部分标识符语法代码如下:
Expr like(const Expr&operand)const;
Expr glob(const Expr&operand)const;
Expr match(const Expr&operand)const;
Expr regexp(const Expr&operand)const;
Expr notLike(const Expr&operand)const;
Expr notGlob(const Expr&operand)const;
Expr notMatch(const Expr&operand)const;
Expr notRegexp(const Expr&operand)const;
标识符类Expr支持自包含的运算,就是说支持相同标识符类实例化后的不同标识符对象之间的运算。这里的运算可以是开发环境原生支持的运算方式、标识符类Expr中定义的运算方式或者标识符类Expr中重载的运算符所表示的运算方式。
比如,假设通过标识符类Expr创建的标识符对象为X,A可以是与标识符对象为X无关的变量或常量,则X=X+A表示将X的值加上A后再赋值给X。再比如,假设三个通过标识符类Expr创建的标识符对象分别为X、Y和Z,则Z=X LIKE Y表示将X和Y运算后再赋值给Z。
上述实施例中,通过相同的标识符类创建的标识符对象之间的运算,可以实现复杂的标识符表达,从而可以实现复杂的数据库操作,为开发者提供便利。
在一个实施例中,该方法还包括:根据标识符类中定义的运算符逻辑代码重载运算符。步骤S204包括:根据重载的运算符对标识符对象所赋的值进行运算,得到函数输入量。
其中,重载运算符,是对已有的运算符重新进行定义,赋予运算符另一种功能的处理过程。重载的运算符可以是一目运算符或者二目运算符。函数输入量是用于输入到关键字函数的数据,可以是标识符对象所赋的值或者根据标识符对象所赋的值进行运算后得到的运算结果。
具体地,计算机设备可在通过标识符类生成标识符对象时,按照标识符类中定义的运算符逻辑代码重载运算符。计算机设备可在检测到作用于标识符对象的重载的运算符时,根据重载的运算符所对应的运算符逻辑代码,对标识符对象所赋的值进行运算,直接或者进一步处理后得到函数输入量。
举例说明,标识符类Expr中可定义如下的运算符逻辑代码:
//unary(一目运算符)
Expr operator!()const;
Expr operator+()const;
Expr operator-()const;
//unary(二目运算符)
Expr operator||(const Expr&operand)const;//or,not conat
Expr operator&&(const Expr&operand)const;
Expr operator*(const Expr&operand)const;
Expr operator/(const Expr&operand)const;
Expr operator%(const Expr&operand)const;
Expr operator+(const Expr&operand)const;
Expr operator-(const Expr&operand)const;
Expr operator<<(const Expr&operand)const;
Expr operator>>(const Expr&operand)const;
Expr operator&(const Expr&operand)const;
Expr operator|(const Expr&operand)const;
Expr operator<(const Expr&operand)const;
Expr operator<=(const Expr&operand)const;
Expr operator>(const Expr&operand)const;
Expr operator>=(const Expr&operand)const;
Expr operator==(const Expr&operand)const;
Expr operator!=(const Expr&operand)const;
上述运算符逻辑代码中,定义了可重载的单目运算符:“!”,“+”和“-”,并定义了可重载的双目运算符“||”,“&&”,“*”,“/”,“%”,“+”,“-”,“<<”,“>>”,“&”,“|”,“<”,“<=”,“>”,“>=”,“==”以及“!=”。
上述实施例中,通过运算符重载,提供了丰富的运算符,可以对标识符对象进行复杂的处理,从而可以实现复杂的数据库操作,为开发者提供便利。
在一个实施例中,在步骤S204包括:获取赋值的常变量;根据标识符对象所赋的值和常变量所赋的值确定函数输入量。
具体地,计算机设备可采用连接常变量和标识符对象的运算符所对应的运算逻辑代码,将常变量所附的值和标识符对象所赋的值进行运算,得到函数输入量。其中,连接常变量和标识符对象的运算符可以是开发环境原生的运算符,也可以是标识符类所定义的可重载的运算符。
比如,可以定义一个常变量并赋值为某字符串,可以将标识符对象所赋的值和常变量所赋的值进行比较,从而判断标识符对象是否符合某种条件。
上述实施例中,在开发环境中定义常变量后,便可以将标识符对象和常变量各自的值进行运算,得到函数输入量,可以提供更为灵活的数据库操作方式。
在一个实施例中,步骤S206包括:获取数据库操作类型;通过引用的数据库操作基类,确定与数据库操作类型相匹配的、且继承自数据库操作基类的数据库操作类;调用数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
具体地,计算机设备引用包括数据库操作基类的类库,该数据库操作类型中定义了将数据库操作类型映射到数据库操作类的函数,将数据库操作类型传入该函数,通过该函数确定与数据库操作类型相匹配的、且继承自数据库操作基类的数据库操作类。
进而,计算机设备可直接通过数据库操作基类调用数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
举例说明,参照图7,数据库操作基类为Statement,Statement中定义了函数getType()。对应select-stmt的数据库操作类为StatementSelect,StatementSelect中定义了select、from、orderBy以及groupBy等各种关键字函数。计算机设备可向函数getType()传入数据库操作类型,从而可以选择继承该Statement的数据库操作类StatementSelect,从而通过调用StatementSelect中的关键字函数,并将函数输入量输入关键字函数。
上述实施例中,通过引用的数据库操作基类,可动态地根据输入的数据库操作类型的不同而调用不同数据库操作类中定义的关键字函数,从而实现不同的数据库操作,进一步提高了开发效率。而且,通过引用的数据库操作基类,可以应用于需要根据获取到的数据库操作类型的不同而实现不同数据库操作的场景,提高了适应性。
在一个实施例中,该数据库操作方法还包括:存储关键字函数的调用记录;获取结构化查询语言语句使用记录查询指令;响应于结构化查询语言语句使用记录查询指令,根据调用记录生成结构化查询语言语句使用记录;反馈结构化查询语言语句使用记录。
其中,关键字函数的调用记录,是记录调用关键字函数的历史行为的记录,比如调用了哪个或哪些关键字函数,调用的关键字函数的函数输入量以及调用的关键字函数的函数输出量等。关键字函数的调用记录可以反映结构化查询语言语句的使用情况,比如调用了哪些关键字、是否省略了关键字或者关键字所针对的标识符是什么等等。
上述实施例中,不用于传统的通过字符串拼接的方式来书写结构化查询语言语句,通过函数调用,可以实现结构化查询语言语句的信息的记录和查询,便于开发者进行程序编写和调试,进一步提高了开发效率。
下面用一个具体应用场景来说明上述数据库操作方法的原理。在C++开发环境下输入以下代码:
Expr rowid(“rowid”);
Expr name(“name”);
Const char*tableName=“myTable”;
StatementSelect().select(rowid)
.from(tableName)
.where(name==“someonename”)
.orderBy(rowid);
其中,用表达式类Expr创建一个表达式对象rowid,并为rowid赋值字符串rowid。用表达式类Expr创建一个表达式对象name,并为name赋值字符串name。创建常变量tableName,并赋值字符串myTable。访问类StatementSelect()中定义的函数select(),并传入表达式对象rowid的值;访问类StatementSelect()中定义的函数from(),并传入常变量tableName的值;访问类StatementSelect()中定义的函数where(),并传入将表达式对象name的值与字符串someonename进行比较运算后得到的值(如真或假);访问类StatementSelect()中定义的函数orderBy(),并传入表达式对象rowid所赋的值。上述代码相当于输入了以下结构化查询语言语句:SELECT rowid FROM myTable WHERE name==“someonename”ORDER BY rowid。上述代码在编写时,开发环境的编译器会自动检查出拼写错误并修正拼写错误,还可以自动补全代码,保证程序开发的高效和正确性。代码风格既接近结构化查询语言语句,又通过运算法重载,简化了语法,大大提高了可读性。
如图8所示,在一个实施例中,提供了一种数据库操作装置800,包括:标识符类应用模块810、数据库操作类应用模块820和数据库操作模块830。
标识符类应用模块810,用于通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据标识符对象所赋的值确定函数输入量。
数据库操作类应用模块820,用于调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
数据库操作模块830,用于根据关键字函数所定义的关键字语法代码和函数输入量,执行相应结构化查询语言语句的数据库操作。
在一个实施例中,标识符类应用模块810还用于获取待赋予标识符对象的值的类型;通过引用的标识符类中的通用模板,生成与值的类型相匹配的标识符语法代码;根据生成的标识符语法代码生成赋类型的值的标识符对象。
如图9所示,在一个实施例中,标识符类应用模块包括:类型获取模块811、标识符语法代码生成模块812和标识符对象生成模块813。
类型获取模块811,用于获取待赋予标识符对象的值的类型。
标识符语法代码生成模块812,用于通过引用的标识符类中的通用模板,生成与所述值的类型相匹配的标识符语法代码。
标识符对象生成模块813,用于根据生成的标识符语法代码生成赋所述类型的值的标识符对象。
在一个实施例中,标识符类应用模块820还用于根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将运算所生成值赋予通过相同的标识符类生成的标识符对象。
在一个实施例中,标识符类应用模块810还用于根据标识符类中定义的运算符逻辑代码重载运算符;数据库操作类应用模块820还用于根据重载的运算符对标识符对象所赋的值进行运算,得到函数输入量。
在一个实施例中,数据库操作类应用模块820还用于获取赋值的常变量;根据标识符对象所赋的值和常变量所赋的值确定函数输入量。
如图10所示,在一个实施例中,数据库操作类应用模块820包括:常变量获取模块821和函数输入量确定模块822。常变量获取模块821用于获取赋值的常变量。函数输入量确定模块822用于根据所述标识符对象所赋的值和所述常变量所赋的值确定函数输入量。
在一个实施例中,数据库操作类应用模块820还用于获取数据库操作类型;通过引用的数据库操作基类,确定与数据库操作类型相匹配的、且继承自数据库操作基类的数据库操作类;调用数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
如图11所示,在一个实施例中,数据库操作类应用模块820还包括:数据库操作类型获取模块823、数据库操作类确定模块824和函数调用模块825。
数据库操作类型获取模块823,用于获取数据库操作类型。
数据库操作类确定模块824,用于通过引用的数据库操作基类,确定与所述数据库操作类型相匹配的、且继承自所述数据库操作基类的数据库操作类。
函数调用模块825,用于调用所述数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数。
如图12所示,在一个实施例中,数据库操作类应用模块还用于存储关键字函数的调用记录。数据库操作装置800还包括:指令获取模块840、结构化查询语言语句使用记录生成模块850和记录反馈模块860。
指令获取模块840,用于获取结构化查询语言语句使用记录查询指令。
结构化查询语言语句使用记录生成模块850,用于响应于所述结构化查询语言语句使用记录查询指令,根据所述调用记录生成结构化查询语言语句使用记录。
记录反馈模块860,用于反馈所述结构化查询语言语句使用记录。
上述数据库操作装置800,将结构化查询语言中的关键字封装为数据库操作类中的关键字函数,将结构化查询语言中的标识符封装为标识符类。在开发环境下,引用数据库操作类和标识符类后,就可以使用标识符类生成赋值的标识符对象,并利用数据库操作类中的关键字函数和标识符对象直接实现相应结构化查询语言语句的数据库操作。由于开发环境会对基于函数的代码进行错误检查,可减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中储存有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行一种数据库操作方法。
在一个实施例中,计算机可读指令被处理器执行时,使得处理器执行以下步骤:通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据标识符对象所赋的值确定函数输入量;调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数;根据关键字函数所定义的关键字语法代码和函数输入量,执行相应结构化查询语言语句的数据库操作。
在一个实施例中,通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象包括:获取待赋予标识符对象的值的类型;通过引用的标识符类中的通用模板,生成与值的类型相匹配的标识符语法代码;根据生成的标识符语法代码生成赋类型的值的标识符对象。
在一个实施例中,计算机可读指令被处理器执行时,使得处理器执行以下步骤:在根据标识符对象所赋的值确定函数输入量之前,根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将运算所生成值赋予通过相同的标识符类生成的标识符对象。
在一个实施例中,计算机可读指令被处理器执行时,还使得处理器执行以下步骤:根据标识符类中定义的运算符逻辑代码重载运算符;根据标识符对象所赋的值确定函数输入量包括:根据重载的运算符对标识符对象所赋的值进行运算,得到函数输入量。
在一个实施例中,根据标识符对象所赋的值确定函数输入量包括:获取赋值的常变量;根据标识符对象所赋的值和常变量所赋的值确定函数输入量。
在一个实施例中,调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数包括:获取数据库操作类型;通过引用的数据库操作基类,确定与数据库操作类型相匹配的、且继承自数据库操作基类的数据库操作类;调用数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
在一个实施例中,计算机可读指令被处理器执行时,还使得处理器执行以下步骤:存储关键字函数的调用记录;获取结构化查询语言语句使用记录查询指令;响应于结构化查询语言语句使用记录查询指令,根据调用记录生成结构化查询语言语句使用记录;反馈结构化查询语言语句使用记录。
上述计算机设备,将结构化查询语言中的关键字封装为数据库操作类中的关键字函数,将结构化查询语言中的标识符封装为标识符类。在开发环境下,引用数据库操作类和标识符类后,就可以使用标识符类生成赋值的标识符对象,并利用数据库操作类中的关键字函数和标识符对象直接实现相应结构化查询语言语句的数据库操作。由于开发环境会对基于函数的代码进行错误检查,可减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
在一个实施例中,提供了一种计算机可读存储介质,储存有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行一种数据库操作方法。
在一个实施例中,计算机可读指令被处理器执行时,使得处理器执行以下步骤:通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据标识符对象所赋的值确定函数输入量;调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数;根据关键字函数所定义的关键字语法代码和函数输入量,执行相应结构化查询语言语句的数据库操作。
在一个实施例中,通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象包括:获取待赋予标识符对象的值的类型;通过引用的标识符类中的通用模板,生成与值的类型相匹配的标识符语法代码;根据生成的标识符语法代码生成赋类型的值的标识符对象。
在一个实施例中,计算机可读指令被处理器执行时,使得处理器执行以下步骤:在根据标识符对象所赋的值确定函数输入量之前,根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将运算所生成值赋予通过相同的标识符类生成的标识符对象。
在一个实施例中,计算机可读指令被处理器执行时,还使得处理器执行以下步骤:根据标识符类中定义的运算符逻辑代码重载运算符;根据标识符对象所赋的值确定函数输入量包括:根据重载的运算符对标识符对象所赋的值进行运算,得到函数输入量。
在一个实施例中,根据标识符对象所赋的值确定函数输入量包括:获取赋值的常变量;根据标识符对象所赋的值和常变量所赋的值确定函数输入量。
在一个实施例中,调用引用的数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数包括:获取数据库操作类型;通过引用的数据库操作基类,确定与数据库操作类型相匹配的、且继承自数据库操作基类的数据库操作类;调用数据库操作类中定义的关键字函数,并将函数输入量输入关键字函数。
在一个实施例中,计算机可读指令被处理器执行时,还使得处理器执行以下步骤:存储关键字函数的调用记录;获取结构化查询语言语句使用记录查询指令;响应于结构化查询语言语句使用记录查询指令,根据调用记录生成结构化查询语言语句使用记录;反馈结构化查询语言语句使用记录。
上述计算机可读存储介质,将结构化查询语言中的关键字封装为数据库操作类中的关键字函数,将结构化查询语言中的标识符封装为标识符类。在开发环境下,引用数据库操作类和标识符类后,就可以使用标识符类生成赋值的标识符对象,并利用数据库操作类中的关键字函数和标识符对象直接实现相应结构化查询语言语句的数据库操作。由于开发环境会对基于函数的代码进行错误检查,可减少人工差错的时间消耗,提高需要结构化查询语言语句的程序开发效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种数据库操作方法,包括:
通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;
根据所述标识符对象所赋的值确定函数输入量;
调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;
根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。
2.根据权利要求1所述的方法,其特征在于,所述通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象包括:
获取待赋予标识符对象的值的类型;
通过引用的标识符类中的通用模板,生成与所述值的类型相匹配的标识符语法代码;
根据生成的标识符语法代码生成赋所述类型的值的标识符对象。
3.根据权利要求1所述的方法,其特征在于,所述根据所述标识符对象所赋的值确定函数输入量之前,所述方法还包括:
根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将所述运算所生成值赋予通过所述相同的标识符类生成的标识符对象。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述标识符类中定义的运算符逻辑代码重载运算符;
所述根据所述标识符对象所赋的值确定函数输入量包括:
根据重载的运算符对所述标识符对象所赋的值进行运算,得到函数输入量。
5.根据权利要求1所述的方法,其特征在于,所述根据所述标识符对象所赋的值确定函数输入量包括:
获取赋值的常变量;
根据所述标识符对象所赋的值和所述常变量所赋的值确定函数输入量。
6.根据权利要求1所述的方法,其特征在于,所述调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数包括:
获取数据库操作类型;
通过引用的数据库操作基类,确定与所述数据库操作类型相匹配的、且继承自所述数据库操作基类的数据库操作类;
调用所述数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
存储所述关键字函数的调用记录;
获取结构化查询语言语句使用记录查询指令;
响应于所述结构化查询语言语句使用记录查询指令,根据所述调用记录生成结构化查询语言语句使用记录;
反馈所述结构化查询语言语句使用记录。
8.一种数据库操作装置,其特征在于,包括:
标识符类应用模块,用于通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;根据所述标识符对象所赋的值确定函数输入量;
数据库操作类应用模块,用于调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;
数据库操作模块,用于根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。
9.根据权利要求8所述的装置,其特征在于,所述标识符类应用模块包括:
类型获取模块,用于获取待赋予标识符对象的值的类型;
标识符语法代码生成模块,用于通过引用的标识符类中的通用模板,生成与所述值的类型相匹配的标识符语法代码;
标识符对象生成模块,用于根据生成的标识符语法代码生成赋所述类型的值的标识符对象。
10.根据权利要求8所述的装置,其特征在于,所述标识符类应用模块还用于根据通过相同的标识符类生成的不同的标识符对象的值进行运算,将所述运算所生成值赋予通过所述相同的标识符类生成的标识符对象。
11.根据权利要求8所述的装置,其特征在于,所述标识符类应用模块还用于根据所述标识符类中定义的运算符逻辑代码重载运算符;
所述数据库操作类应用模块还用于根据重载的运算符对所述标识符对象所赋的值进行运算,得到函数输入量。
12.根据权利要求8所述的装置,其特征在于,所述数据库操作类应用模块包括:
常变量获取模块,用于获取赋值的常变量;
函数输入量确定模块,用于根据所述标识符对象所赋的值和所述常变量所赋的值确定函数输入量。
13.根据权利要求8所述的装置,其特征在于,所述数据库操作类应用模块包括:
数据库操作类型获取模块,用于获取数据库操作类型;
数据库操作类确定模块,用于通过引用的数据库操作基类,确定与所述数据库操作类型相匹配的、且继承自所述数据库操作基类的数据库操作类;
函数调用模块,用于调用所述数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数。
14.根据权利要求8至13中任一项所述的装置,其特征在于,所述数据库操作类应用模块还用于存储所述关键字函数的调用记录;
所述装置还包括:
指令获取模块,用于获取结构化查询语言语句使用记录查询指令;
结构化查询语言语句使用记录生成模块,用于响应于所述结构化查询语言语句使用记录查询指令,根据所述调用记录生成结构化查询语言语句使用记录;
记录反馈模块,用于反馈所述结构化查询语言语句使用记录。
15.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行以下步骤:
通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象;
根据所述标识符对象所赋的值确定函数输入量;
调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数;
根据所述关键字函数所定义的关键字语法代码和所述函数输入量,执行相应结构化查询语言语句的数据库操作。
16.根据权利要求15所述的计算机设备,其特征在于,所述通过引用的标识符类中定义的标识符语法代码生成赋值的标识符对象包括:
获取待赋予标识符对象的值的类型;
通过引用的标识符类中的通用模板,生成与所述值的类型相匹配的标识符语法代码;
根据生成的标识符语法代码生成赋所述类型的值的标识符对象。
17.根据权利要求15所述的计算机设备,其特征在于,所述调用引用的数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数包括:
获取数据库操作类型;
通过引用的数据库操作基类,确定与所述数据库操作类型相匹配的、且继承自所述数据库操作基类的数据库操作类;
调用所述数据库操作类中定义的关键字函数,并将所述函数输入量输入所述关键字函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710250109.4A CN107239484A (zh) | 2017-04-17 | 2017-04-17 | 数据库操作方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710250109.4A CN107239484A (zh) | 2017-04-17 | 2017-04-17 | 数据库操作方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107239484A true CN107239484A (zh) | 2017-10-10 |
Family
ID=59984042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710250109.4A Pending CN107239484A (zh) | 2017-04-17 | 2017-04-17 | 数据库操作方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107239484A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304522A (zh) * | 2018-01-25 | 2018-07-20 | 深圳市买买提信息科技有限公司 | 一种数据库之间差异的比对方法、装置及终端设备 |
CN108388646A (zh) * | 2018-02-28 | 2018-08-10 | 弘成科技发展有限公司 | 一种能够保证sql完整性且能动态变动的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020107840A1 (en) * | 2000-09-12 | 2002-08-08 | Rishe Naphtali David | Database querying system and method |
US20020129030A1 (en) * | 2000-12-28 | 2002-09-12 | Lg Electronics Inc. | Method for processing dynamic database in distributed processing system based on corba platform |
CN101635001A (zh) * | 2008-07-18 | 2010-01-27 | QlikTech国际公司 | 从数据库提取信息的方法和设备 |
CN103279509A (zh) * | 2013-05-17 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种采用动态查询语言的快速查询方法 |
CN105573774A (zh) * | 2014-11-05 | 2016-05-11 | 中国银联股份有限公司 | 应用程序参数管理及配置方法 |
-
2017
- 2017-04-17 CN CN201710250109.4A patent/CN107239484A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020107840A1 (en) * | 2000-09-12 | 2002-08-08 | Rishe Naphtali David | Database querying system and method |
US20020129030A1 (en) * | 2000-12-28 | 2002-09-12 | Lg Electronics Inc. | Method for processing dynamic database in distributed processing system based on corba platform |
CN101635001A (zh) * | 2008-07-18 | 2010-01-27 | QlikTech国际公司 | 从数据库提取信息的方法和设备 |
CN103279509A (zh) * | 2013-05-17 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 一种采用动态查询语言的快速查询方法 |
CN105573774A (zh) * | 2014-11-05 | 2016-05-11 | 中国银联股份有限公司 | 应用程序参数管理及配置方法 |
Non-Patent Citations (2)
Title |
---|
刘乃安: "《Android操作系统与应用开发》", 31 October 2012, 西安电子科技大学出版社 * |
欧阳君: "火电厂管控一体化系统中数据访问层的设计及应用", 《中国优秀博硕士学位论文全文数据库(硕士)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304522A (zh) * | 2018-01-25 | 2018-07-20 | 深圳市买买提信息科技有限公司 | 一种数据库之间差异的比对方法、装置及终端设备 |
CN108388646A (zh) * | 2018-02-28 | 2018-08-10 | 弘成科技发展有限公司 | 一种能够保证sql完整性且能动态变动的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112100054B (zh) | 一种面向数据管控的程序静态分析方法和系统 | |
KR100995199B1 (ko) | 명령에 입력되는 파라미터들에 반영 기반 프로세싱을 수행하는 시스템 및 컴퓨터 판독 가능 저장 매체 | |
US10394694B2 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
WO2019237701A1 (zh) | 跨语言编程 | |
CN110704064B (zh) | 编译和执行智能合约的方法及装置 | |
US20110314459A1 (en) | Compiler with user-defined type inference rules | |
CN110007920B (zh) | 一种获取代码依赖关系的方法、装置及电子设备 | |
EP3014479A2 (en) | Omega names: name generation and derivation | |
CN112256321A (zh) | 静态库打包方法、装置、计算机设备和存储介质 | |
CN112783912B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
Jackson | Alloy 3.0 reference manual | |
US11537367B1 (en) | Source code conversion from application program interface to policy document | |
US9311111B2 (en) | Programming environment with support for handle and non-handle user-created classes | |
CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
US20060085400A1 (en) | Data access layer design and code generation | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
JP2000029674A (ja) | アプリケ―ションソフトウェア構成方法 | |
CN107239484A (zh) | 数据库操作方法、装置和计算机设备 | |
CN107729015A (zh) | 一种确定工程代码中的无用函数的方法和装置 | |
CN111259042B (zh) | 一种动态查询方法及系统 | |
CN112631656A (zh) | 一种基于源代码的智能合约优化方法及装置 | |
CN117234517A (zh) | 接口参数校验方法、装置、设备及存储介质 | |
CN110659022B (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN113485686B (zh) | 信息系统程序的生成方法、装置、电子设备及存储介质 | |
Wille | Presenting C |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171010 |