一种数据库操作方法、装置、设备及存储介质与流程

文档序号:17601648发布日期:2019-05-07 20:23阅读:184来源:国知局
一种数据库操作方法、装置、设备及存储介质与流程

本公开实施例涉及程序编译技术,尤其涉及一种数据库操作方法、装置、电子设备及存储介质。



背景技术:

随着计算机技术的迅速发展,越来越多的软件开始走进人们的视线中,而在软件编译中,对于数据库的操作也成为了至关重要的一步。

数据库是指以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,具有整体性和共享性等特点。以sqlite数据库为例,作为一款轻型数据库,sqlite数据库可以在多个主流操作系统中运行,并能与多种编程语言相结合,因此,sqlite数据库被广泛应用于软件编译过程中。现有技术中,对于sqlite的增加、删除、修改或查询等操作,往往通过编写sql语句完成。例如,给对象赋予数据,并编写sql语句将该数据写入sqlite中对应数据表里,作为一条数据记录;或者,利用sql语句查询各数据表,将查询到的数据解析并赋值给对象。

发明人在实现本公开的过程中,发现现有技术有如下缺陷:sql语句编写复杂,同时,在编写sql语句时,尤其是编写字符串时,由于字符串是由一连串无规则的数字或符号组成,字符串的编写容易出错,而这种错误是无法被编辑器静态解析的,因此,字符串编写错误往往存在于sql数据库中,造成数据错误。



技术实现要素:

本公开实施例提供了一种数据库操作方法、装置、电子设备及存储介质,避免了编写繁琐的sql语句以及字符串编写错误而导致的程序出错。

第一方面,本公开实施例提供了一种数据库操作方法,包括:

第一应用端获取用户操作指令,并对所述用户操作指令进行识别;

所述第一应用端如果确定所述用户操作指令中包括数据库操作标识,则根据所述数据库操作标识,将所述用户操作指令转换为标准sql语句;

所述第一应用端将所述标准sql语句发送至第二应用端,以使所述第二应用端根据所述标准sql语句对标准数据库进行操作;

其中,所述第一应用端与所述标准数据库相隔离。

第二方面,本公开实施例提供了一种数据库操作装置,应用于第一应用端中,包括:

指令识别模块,用于获取用户操作指令,并对所述用户操作指令进行识别;

标准sql语句转换模块,用于如果确定所述用户操作指令中包括数据库操作标识,则根据所述数据库操作标识,将所述用户操作指令转换为标准sql语句;

标准sql语句发送模块,用于将所述标准sql语句发送至第二应用端,以使所述第二应用端根据所述标准sql语句对标准数据库进行操作;

其中,所述第一应用端与所述标准数据库相隔离。

第三方面,本公开实施例提供了一种电子设备,包括存储器、处理装置及存储在存储器上并可在处理装置上运行的计算机程序,所述处理装置执行所述程序时实现本公开任意实施例所述的数据库操作方法。

第四方面,本公开实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本公开任意实施例所述的数据库操作方法。

本公开实施例的技术方案,根据第一应用端识别的用户操作指令,生成标准sql语句,并通过第二应用端根据标准sql语句对标准数据库进行操作,避免了编写繁琐的sql语句,尤其避免了由于无法被系统静态解析的字符串编写错误而导致的程序出错,减少程序编译量的同时又保证了sql语句的准确。

附图说明

图1是本公开实施例一中的一种数据库操作方法的流程图;

图2是本公开实施例二中的一种数据库操作方法的流程图;

图3是本公开实施例三中的一种数据库操作方法的流程图;

图4是本公开实施例四中的一种数据库操作装置的结构图;

图5是本公开实时例五中的一种数据库操作设备的结构图。

具体实施方式

下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。

实施例一

图1为本公开实施例一提供的数据库操作方法的流程图,本实施例可适用于对数据库进行数据操作的情况,该方法可以由数据库操作装置来执行,该装置可以通过软件和/或硬件实现,并一般可以集成在一个或者多个数据库操作设备中,该方法具体包括如下步骤:

s110、第一应用端获取用户操作指令,并对所述用户操作指令进行识别。

objective-c语言(简称“oc语言”),作为一种实用性很强的编程语言,不但完全兼容c语言,而且在此基础上增加了面向对象编程的语言特性,运用c语言写成很小的运行库,应用程序的尺寸增加很小,通常不会比其原始码大很多。oc语言主要应用于macosx和gnustep系统中,用于ios开发。

在本公开实施例中,可选的,第一应用端通过oc语言实现,用于对数据库进行操作,支持面向对象的增加、删除、修改、查询、批量增加数据和数据模型升级等操作。

用户操作指令,是用户发出的一句或多句计算机指令,用于执行增加、删除、修改或查询等操作,在本公开实施例中,可选的,用户操作指令通过oc语言编写。

s120、所述第一应用端如果确定所述用户操作指令中包括数据库操作标识,则根据所述数据库操作标识,将所述用户操作指令转换为标准sql语句。

可选的,当用户操作指令中包含有第一应用端的名称时,那么可以认为该用户操作指令中包括了对应的数据库操作标识。例如,第一应用端命名为xq_dao模块,那么在用户操作指令中,出现以“xq_”为前缀的指令时,即认为该指令为数据库操作标识;例如,在用户操作指令中出现“xq_query”时,则认为是数据库查询标识,查询数据库中的一条或多条数据记录;在用户操作指令中出现“xq_delete”时,则认为是数据库删除标识,删除数据库中的一条或多条数据记录。第一应用端是线程安全的,可以在多线程中任意使用“xq_xxx”操作。

在本公开实施例中,可选的,由oc语言编写的第一应用端,接收到由oc语言编写的用户操作指令后,根据对应的数据库操作标识,并利用oc语言具有的runtime特性,将用户操作指令转换为标准sql语句。

runtime是运行时,也就是程序在运行时所做的工作,其本身具有一套底层的c语言接口。oc语言作为动态的语言,通过runtime特性将一些工作放在代码运行时才处理而并非编译时处理。例如,有很多类和成员变量在编译时是不知道的,而在运行时,编写的代码才会转换成完整的、确定的代码运行。runtime可以在程序运行过程中,动态创建一个类,并为类添加属性或方法,用来封装框架;还可以遍历一个类中所有的成员变量或所有方法。

在本公开实施例中,可选的,用户通过oc语言编写操作指令,runtime可以自动将oc语句转换成sql语句。结构化查询语言(structureiquerylanguage,简称sql),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理对应的数据库系统。

s130、所述第一应用端将所述标准sql语句发送至第二应用端,以使所述第二应用端根据所述标准sql语句对标准数据库进行操作;其中,所述第一应用端与所述标准数据库相隔离。

数据库可以看作是一个存放数据的仓库,按照一定的数据结构来存储电子文件,用户可以对电子文件中的数据进行增加、更新或删除等操作。在本公开实施例中,可选的,标准数据库为sqlite数据库。sqlite是一款轻型的数据库,是一个实现了无服务器和零配置的sql数据库引擎,其占用资源非常低,尤其在嵌入式设备中,大小在几百kb以内。同时,sqlite可以在unix(包括linux、macos-x、android和ios)和windows(包括win32、wince和winrt)等多个主流操作系统中运行,还能够与c语言、oc语言和java等多种程序语言相结合。

第二应用端用于接收第一应用端发送的标准sql语句,并根据接收到的标准sql语句对数据库进行对应的操作,第二应用端使得第一应用端与标准数据库相隔离。在本公开实施例中,可选的,第二应用端为fmdb模块,fmdb是一种封装库,以oc语言的方式了封装了sqlite数据库的接口,其本身为轻量级的面向对象的库。

第一应用端中预先封装有第二应用端,第二应用端中预先封装有标准数据库;第一应用端通过第一标准通信接口与第二应用端进行通信,第二应用端通过第二标准通信接口与标准数据库进行通信。在本实施例中,可选的,oc语言编写的xq_dao模块预先封装有fmdb模块,fmdb模块预先封装有标准数据库;xq_dao模块通过fmdb模块的接口与fmdb模块进行通信,fmdb模块通过sqlite的接口与sqlite数据库进行通信。

所述第一应用端、所述第二应用端以及所述标准数据库设置于同一软件包中。在本公开实施例中,可选的,第一应用端、fmdb模块和sqlite数据库设置于同一个sdk包中。第一应用端与fmdb均为轻量级模块,增加的软件包的体积远小于1mb。同时,第一应用端集成十分方便,不需要集成任何类,对原有业务入侵小,非常轻便。

本公开实施例的技术方案,根据第一应用端识别的用户操作指令,生成标准sql语句,并通过第二应用端根据标准sql语句对标准数据库进行操作,避免了编写繁琐的sql语句,尤其避免了由于无法被系统静态解析的字符串编写错误而导致的程序出错,减少程序编译量的同时又保证了sql语句的准确。

实施例二

图2为本公开实施例二中的一种数据库操作方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,用户操作指令为对目标对象的赋值指令,赋值指令中包括的数据库操作标识为数据库查询标识,第二应用端为fmdb模块,标注数据库为sqlite数据库。相应的,本实施例的方法具体包括如下操作:

s210、第一应用端获取对目标对象的赋值指令,并对所述赋值指令进行识别。

在第一应用端获取到对目标对象的存储指令之前,程序编写人员首先要定义类,并根据类创建对象;其中,类是描述对象的数据结构,可以理解为对象的模板,而对象是创建在在内存中的数据实体,其数据结构由类决定。

现有技术是通过编写sql语句查询sqlite数据库,将查询到的数据解析并赋值给对象。然而,这样的查询方式操作繁琐,尤其是字符串的编写容易出现错误,而且这种错误是无法被编译器静态解析。因此,这样的编写方式,增加了工作量的同时往往也会造成程序错误。而在本公开实施例中,通过oc语言编写简单的赋值指令,不需要编写繁琐复杂的sql语句。

s220、所述第一应用端如果确定所述赋值指令中包括数据库查询标识,则根据所述数据库查询标识,将所述赋值指令转换为标准sql语句。

以上述实施例中,第一应用端命名为xq_dao模块为例,当赋值指令中包括数据库查询标识“xq_query”时,则第一应用端根据所述数据库查询标识将所述赋值指令转换为对应的标准sql语句,即标准sql查询语句。

s230、所述第一应用端将所述标准sql语句发送至第二应用端,以使所述fmdb模块根据所述标准sql语句对标准数据库进行查询操作;其中,所述第一应用端与所述sqlite数据库相隔离。

xq_dao模块将标准sql语句发送至fmdb模块,以使所述fmdb模块根据所述标准sql语句对标准数据库进行查询操作。

s240、所述第一应用端接收所述第二应用端反馈的,针对所述标准sql语句的查询结果;并将所述查询结果赋值给所述目标对象。

fmdb模块返回的数据是没有数据结构、散列的字段,xq_dao模块则将这些数据组织并自动赋值给新的对象。例如,fmdb模块返回的是{"name","xxx"},而xq_dao模块利用runtime特性,搜索对象的成员变量里名字为"name"的成员变量,给该成员变量赋值"xxx"。其中,"name"是一个字符串,而对象的成员变量,是在代码里固定的一个变量名称,只需要编写一个变量名称,不需要编写该字符串,即可获取到该对象的成员变量相应的赋值。

本公开实施例的技术方案,当用户对目标对象发出赋值指令时,第一应用端根据数据库查询标识,生成标准sql语句,对sqlite数据库进行查询操作,并将接收到的第二应用端反馈的数据组织后赋值给新的对象。避免了书写冗长的字符串,也避免了由于无法被系统静态解析的字符串编写错误而导致的程序出错,减少程序编译量的同时又保证了sql语句的准确。

实施例三

图3为本公开实施例三中的一种数据库操作方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,用户操作指令为对所述标准数据库存储指令,存储指令中包括的数据库操作标识为数据库存储标识,第二应用端为fmdb模块,标注数据库为sqlite数据库。相应的,本实施例的方法具体包括如下操作:

s310、第一应用端获取对目标对象的存储指令,并对所述存储指令进行识别。

在第一应用端获取到对目标对象的存储指令之前,程序编写人员首先要定义类,并根据类创建对象,并对对象赋值,赋予数据。现有技术中是根据类结构编写sql语句,通过在sqlite数据库中与该对象对应的,即与类名同名的数据表下,增加一条数据记录;或者,在sqlite数据库中修改与该对象对应的数据,即修改一条数据记录。而在本公开实施例中,通过oc语言编写简单的赋值指令以及存储指令,不需要编写繁琐复杂的sql语句。

s320、所述第一应用端如果确定所述存储指令中包括数据库存储标识,则根据所述数据库存储标识,将所述存储指令转换为标准sql语句。

以上述实施例中,第一应用端命名为xq_dao模块为例,当赋值指令中包括数据库存储标识“xq_save”时,则第一应用端根据所述数据库存储标识将所述存储指令转换为标准sql语句,即标准sql存储语句。

s330、所述第一应用端将所述标准sql语句发送至fmdb模块,以使所述fmdb模块根据所述标准sql语句对标准数据库进行存储操作;其中,所述第一应用端与所述sqlite数据库相隔离。

xq_dao模块将标准sql语句发送至fmdb模块,以使所述fmdb模块根据所述标准sql语句对标准数据库进行存储操作。特别的,若目标对象的成员变量为sqlite中没有的变量,那么在sql数据库中与该对象对应的数据表下,即与类名同名的数据表下,根据该标准sql语句增加一条数据记录。若目标对象的成员变量为sqlite中已有的变量,那么根据该标准sql语句,将该目标对象对应的各成员变量重新赋值。例如,sqlite数据库中已存储有对象user,其中,user.username=@“小明”,user.userid=@“1”;而根据目标对象将存储指令转换为标准sql语句为user.username=@“小明”,user.userid=@“2”;那么将该user对应的成员变量,修改为user.username=@“小明”,user.userid=@“2”;不增加新的数据记录。

特别的,所述用户操作指令为对目标对象的删除指令时,所述删除指令中包括的数据库操作标识为数据库删除标识。

以上述实施例中,第一应用端命名为xq_dao模块为例,当赋值指令中包括数据库删除标识“xq_delete”时,则第一应用端根据所述数据库删除标识对标准数据库中目标对象对应的数据记录进行删除操作。

本公开实施例的技术方案,当用户对目标对象发出存储或删除指令时,第一应用端识别对应的数据库操作标识,生成标准sql语句,对sqlite数据库进行增加、删除或修改操作,避免了编写繁琐的sql语句,也避免了由于无法被系统静态解析的字符串编写错误而导致的程序出错,减少程序编译量的同时又保证了标准数据库的完整性和准确性。

实施例四

图4是本公开实施例四所提供的一种数据库操作装置可执行本公开任意实施例所提供的数据库操作方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件和/或硬件实现,应用于第一应用端中,包括:指令识别模块410、标准sql语句转换模块420和标准sql语句发送模块430。

指令识别模块410,用于获取用户操作指令,并对所述用户操作指令进行识别;

标准sql语句转换模块420,用于如果确定所述用户操作指令中包括数据库操作标识,则根据所述数据库操作标识,将所述用户操作指令转换为标准sql语句;

标准sql语句发送模块430,用于将所述标准sql语句发送至第二应用端,以使所述第二应用端根据所述标准sql语句对标准数据库进行操作;

其中,所述第一应用端与所述标准数据库相隔离。

本公开实施例的技术方案,根据第一应用端识别的用户操作指令,生成标准sql语句,并通过第二应用端根据标准sql语句对标准数据库进行操作,避免了编写繁琐的sql语句,尤其避免了由于无法被系统静态解析的字符串编写错误而导致的程序出错,在减少程序编译量的同时又保证了sql语句的准确。

在上述各实施例的基础上,第一应用端中预先封装有所述第二应用端,所述第二应用端中预先封装有所述标准数据库;所述第一应用端通过第一标准通信接口与所述第二应用端进行通信,所述第二应用端通过第二标准通信接口与所述标准数据库进行通信。

在上述各实施例的基础上,标准数据库,具体可以包括:

sqlite数据库。

在上述各实施例的基础上,第二应用端,具体可以包括:

fmdb模块。

在上述各实施例的基础上,数据库操作装置,可以通过objective-c语言实现,且基于runtime技术运行。

在上述各实施例的基础上,若指令识别模块410获取的用户操作指令为对目标对象的赋值指令,则所述赋值指令中包括的数据库操作标识为数据库查询标识;且所述赋值指令赋值的数值为对所述标准数据库中的数据查询结果。

在上述各实施例的基础上,标准sql语句发送模块430,具体可以用于:

接收所述第二应用端反馈的,针对所述述标准sql语句的查询结果;将所述查询结果赋值给所述目标对象。

在上述各实施例的基础上,若指令识别模块410获取的用户操作指令为对目标对象的存储指令,则所述存储指令中包括的数据库操作标识为数据库存储标识。

在上述各实施例的基础上,若指令识别模块410获取的用户操作指令为对目标对象的删除指令,则所述删除指令中包括的数据库操作标识为数据库删除标识。

在上述各实施例的基础上,所述第一应用端、所述第二应用端以及所述标准数据库设置于同一软件包中。

上述装置可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本公开任意实施例提供的方法。

实施例五

图5示出了适于用来实现本公开实施例的电子设备500的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储装置508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

通常,以下装置可以连接至i/o接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文各流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从rom502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:第一应用端获取用户操作指令,并对所述用户操作指令进行识别;所述第一应用端如果确定所述用户操作指令中包括数据库操作标识,则根据所述数据库操作标识,将所述用户操作指令转换为标准sql语句;所述第一应用端将所述标准sql语句发送至第二应用端,以使所述第二应用端根据所述标准sql语句对标准数据库进行操作;其中,所述第一应用端与所述标准数据库相隔离。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一应用端还可以被描述为“获取用户操作指令,并对所述用户操作指令进行识别的模块”。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1