CN108228597A - 数据库访问方法和装置 - Google Patents
数据库访问方法和装置 Download PDFInfo
- Publication number
- CN108228597A CN108228597A CN201611150379.XA CN201611150379A CN108228597A CN 108228597 A CN108228597 A CN 108228597A CN 201611150379 A CN201611150379 A CN 201611150379A CN 108228597 A CN108228597 A CN 108228597A
- Authority
- CN
- China
- Prior art keywords
- sql
- simple sentence
- database
- statement
- collection
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库访问方法和装置,所述方法的执行主体为服务器,所述服务器按预设格式存储有对所述数据库进行操作的SQL信息,所述方法包括:接收客户端发出的数据库访问请求,读取与所述数据库访问请求对应的SQL信息;执行SQL信息中包括的SQL语句,将执行结果集反馈至所述客户端。本申请通过上述手段,可摆脱对浏览器和其他服务器容器的依赖,有效解决现有技术容易暴露数据访问代码的问题,提高数据访问的安全性及其访问效率。
Description
技术领域
本申请涉及互联网数据处理技术领域,特别地,涉及一种数据库访问方法和装置。
背景技术
Web网络应用离不开数据库的支持,现有web应用一般通过运行在浏览器中JavaScript语句实现对数据库的访问,其中的SQL语句大多是直接在数据访问层作为字符串拼接,即便SQL语句没有直接写在HTML页面中,也存在与数据读取的相关代码暴露在用户页面中的问题,存在着极大的安全漏洞,很容易被破解盗用。
发明内容
本申请提供一种数据库访问方法和装置,用于解决现有技术容易暴露数据访问代码的问题。
本申请公开的一种数据库访问方法,所述方法的执行主体为服务器,所述服务器按预设格式存储有对所述数据库进行操作的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之前,从传递参数集中获取上个单句SQL的输出结果作为输入参数,在执行当前单句SQL之后,将当前单句SQL的执行结果写入传递参数集;其中,对于第一个单句SQL,输入参数为所述SQL语句集的输入参数。
优选的,所述装置还包括:信息缓存模块,用于读取对所述数据库进行操作的SQL信息,解析出SQL语句后按预设缓存格式缓存至内存缓冲区;所述信息读取模块读取对应的SQL信息,具体为:从内存缓冲区中读取对应的SQL语句。
优选的,所述服务器还存储有预设格式的数据库连接配置信息;所述装置还包括:数据库连接模块,用于读取所述数据库连接配置信息,创建与所述数据库建立连接的数据库连接池。
优选的,所述服务器配置有Node.JS平台,组成所述装置的各功能模块为采用Javascript语言实现并部署在Node.JS平台的软件模块。
与现有技术相比,本申请具有以下优点:本申请优选实施例通过将访问数据库的SQL信息按预设格式存储在服务器端,并将对数据库进行操作处理配置的web端由客户端共享的手段,可摆脱对浏览器和其他服务器容器的依赖,有效解决现有技术容易暴露数据访问代码的问题,能够有效提高数据访问的安全性及其访问效率。
附图说明
附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请数据库访问方法第一实施例的流程图;
图2为本申请数据库访问方法第二实施例的流程图;
图3为本申请数据库访问装置一实施例的结构示意图;
图4为本申请数据库访问装置的web系统的运行时序图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
参照图1,示出了本申请数据库访问方法第一实施例的流程,执行主体为按预设格式存储有对所述数据库进行操作的SQL信息的服务器,所述数据库访问方法实施例包括:
S103:接收客户端发出的数据访问请求,读取与所述数据库访问请求相对应的SQL信息。
S105:执行SQL信息中包括的SQL语句,将执行结果集反馈至所述客户端。
本优选实施例中的SQL语句可以为单句SQL,也可以是SQL语句集;其中,SQL语句集包括多个单句SQL和/或单句SQL之间的传递参数集。
当SQL语句为SQL语句集时,上述执行SQL语句的方法具体可以包括:
步骤S105-1:判断所述SQL语句集中的单句SQL之间是否有参数传递;若是,转步骤S105-2;否则,转步骤S105-6。
步骤S105-2:读取第一个单句SQL作为当前单句SQL,将SQL语句集的输入参数作为当前单句SQL的输入参数写入传递参数集。
步骤S105-3:从传递参数集读取当前语句的输入参数,执行当前单句SQL,将当前单句SQL的执行结果作为下个单句SQL的输入参数写入传递参数集。
步骤S105-4:判断当前单句SQL是否为SQL语句集的最后一个单句SQL;若是,结束流程;否则,转步骤S105-5。
步骤S105-5:读取下一个单句SQL作为当前单句SQL;转步骤S105-3。
步骤S105-6:读取第一个单句SQL作为当前单句SQL。
步骤S105-7:执行当前单句SQL。
步骤S105-8:判断当前单句SQL是否为SQL语句集的最后一个单句SQL;若是,结束流程;否则,转步骤S105-9。
步骤S105-9:读取下一个单句SQL作为当前单句SQL;转步骤S105-7。
本申请通过上述将访问数据库的SQL信息按预设格式存储在服务器端的手段,可摆脱对浏览器和其他服务器容器的依赖,有效解决现有技术容易暴露数据访问代码的问题,能够有效提高数据访问的安全性及其访问效率。
另外,通过设置能够支持单句SQL间数据传递(前一单句SQL执行后的结果集可作为后一单句SQL的输入参数)的SQL语句集,实现支持事务处理的功能,提高了数据量庞大时SQL处理的运行速度,减少建立索引的数量,提高整体的数据库效率,增强了程序的健壮性、降低了程序的复杂度。能够较好地解决现有技术中SQL语句大多是直接在数据访问层作为字符串拼接,即便有程序编写成成型的框架也只能做简单的数据操作,如单表插入、单表查询或者单表更新等,不能够完成多表关联的操作,更不能完全支持事务的问题。
参照图2,示出了本申请数据库访问方法第二实施例的流程,在本优选实施例中,针对现有数据访问方式在页面加载的时候才能建立数据库连接,当访问 量过大时必然对数据库服务器是一种考验,容易造成服务器由于过载而崩溃的问题,引入利用服务端存储的数据库连接配置信息创建数据库连接池的技术手段予以解决,为此,还需要在服务器中按预设格式存储数据库连接配置信息。具体实施时,所述数据库连接配置信息可以存储在XML格式的数据库连接配置文件中,对所述数据库进行操作的SQL信息可以存储在XML格式的SQL模板配置文件中。本方法实施例包括:
S101:读取本地存储的数据库连接配置信息,创建与所述数据库建立连接的数据库连接池。
具体实施时,根据选用的数据库管理系统的特点,数据库连接配置信息可以包括数据库类型、数据源连接类型和SQL模板配置文件所在的路径等基本信息,还可以包括是否启用缓存机制、是否启用延迟加载、最大请求并发数、最大session数、最大并发事务数、是否启用命名空间、事务管理类型等信息。
进一步的,当需要连接的数据库有多个时,可以创建针对相同或不同类型数据库的数据库连接池。
数据库连接池负责分配、管理和释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。采用释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,以提高数据库的操作性能。
以XML模板为例,数据库连接配置模板可以采用如下格式:
其中的参数释义如下表所示:
属性名称 | 属性释义 |
sqlType | 数据库类型 |
cacheModelEnabled | 是否启用缓存机制 |
lazyLoadingEnabled | 是否启用延迟加载 |
maxRequests | 最大请求并发数 |
maxSessions | 最大session数 |
maxTransactions | 最大并发事务数 |
useStatementNamespaces | 是否启用命名空间 |
transactionManager type | 事务管理类型,包括JDBC、JTA、EXTERNAL等 |
dataSource type | 数据源连接类型,包括SIMPLE、DBCP、JNDI等 |
sqlMap resource | 需要加载的SQL文件路径 |
S103:接收客户端发出的数据访问请求,读取与所述数据库访问请求相对应的SQL信息。
在另一实施例中,上述SQL信息中的SQL语句可以为单句SQL,也可以为包括有多个单句SQL的SQL语句集,其中的单句SQL可以为用于对数据库中的数据进行操作的数据操纵语言(DML,Data Manipulation Language)语句,如数据插入语句(INSERT)、数据删除语句(DELETE)、数据修改语句(UPDATE)、查询语句(SELECT)等;也可以为用于定义和管理SQL数据库中所有对象的数据定义语言(DDL,Data Definition Language)语句,如对象创建语句(CREATE)、对象修改语句(ALTER)、对象删除语句(DROP)等;还可以是用于控制数据库访问权限的数据控制语言(DCL,Data Control Language)语句,如授权(GRANT)、撤销权限(REVOKE)等。
其中,为了解决现有技术随着业务系统运行时间越来越长,数据库中的数据会越来越庞大,数据检索的速度会大大降低从而影响用户体验,甚至导致程 序不能运行问题;以及数据库表间的关联查询会大大消耗检索时间,即使创建索引也不能有效解决的问题(而且索引的创建不仅会造成数据容量加大,另外数据在做更新或者插入操作时服务性能也会大大降低)。本申请采用将复杂的关联查询语句分开操作的方式实现,即将复杂的关联查询语句拆分为顺序执行的多个单句SQL,多个单句SQL间有参数传递。
以XML模板为例,对于单句SQL,可以采用如下示例形式实现:
数据插入语句:
<insert id=”elected”parameterType=”map”>
INSERT INTO tablename(column1,column2)VALUES(#value1#,#value2#)
</insert>
数据删除语句:
<delete id=”deleteid”parameterType=”map”>
DELETE FROM tablename WHERE column1=#value#
</delete>
数据修改语句:
<update id=”updateid”parameterType=”map”>
UPDATE tablename SET column1=#value1#WHERE column2=#value2#
</update>
数据查询语句:
<select id=”selected”parameterType=”map”resultType=”map”>
SELECT*FROM tablename WHERE id=#value#
</select>
其中的参数释义如下表所示:
属性名称 | 属性释义 |
id | 某一命名空间下的唯一id |
parameterType | 参数类型,目前支持map类型 |
resultType | 返回类型,目前支持map类型 |
当SQL语句为SQL语句集时,对于没有参数传递的SQL语句集,XML模板可以采用如下形式实现:
对于单句SQL之间有参数传递的情况,SQL语句集还包括有单句SQL之间的传递参数集,此时,SQL语句集中的各单句SQL必须按顺序执行,并将上 个单句SQL的执行结果为下个单句SQL的输入参数。对于有参数传递的SQL语句集,XML模板可以采用如下形式实现:
释义如下:
属性名称 | 属性释义 |
id | 某一命名空间下的唯一id |
parameterType | 参数类型,目前支持map、list类型 |
resultType | 返回类型,目前支持map类型 |
parameterTransfer | 是否有参数传递 |
transfers | SQL间参数传递格式,目前支持map类型 |
单句SQL间的参数传递由用户定义。如sqllist中有两个要执行的SQL语句,第一个单句SQL的执行结果要作为第二个单句SQL的输入参数,则在传递执行参数时要多加一个参数集合,参数集合中存储的是键值对,key是第一句SQL的输出结果,而value对应的是第二句SQL的输入参数,数据格式可以采用如下形式:
[{key:value,key:value},{key:value,key:value}]
S105:执行SQL信息中包括的SQL语句,将执行结果集反馈至所述客户端。
在另一实施例中,服务器配置有Node.JS平台,本申请的上述数据访问方法采用Javascript语言实现。
Node.js是一个开放源代码、跨平台的、可用于服务器端和网络应用的运行环境,采用JavaScript语言编写,目前支持多个主流平台系统,且采用谷歌的V8引擎来执行Javascript代码,提供具备事件驱动和非阻塞I/O的应用程序编程接口(API,ApplicationProgramming Interface),可摆脱对浏览器和其它服务器容器(Service Container)的依赖而独立运行。
本申请通过上述手段,可以产生如下技术效果:
1.降低了书写难度和出错率。现有技术采用的SQL拼接很容易造成参数拼 接的错误,如缺少关键词、字符串和字符串之间没有预留空格以及占位符和参数数量不匹配等问题。本申请采用预设格式(如XML格式)编写SQL语句,所见即所得,将SQL语句按照类型、表名称、条件和排序等分开,编写起来简单且不易出错,提高了编码效率,并有效降低编码难度和出错率。
2.提高了运行效率。相对于浏览器端直接用JavaScript对数据库直接访问,在服务器的Node.js环境中,JavaScript的运行速率更快。通过对Google V8引擎进行封装,对一些特殊用例进行了优化,使得V8在非浏览器环境下运行得更好。
3.提高了系统的安全性。浏览器端编写SQL语句,可以通过网页查看的源码,直接暴露了数据库的一些信息降低了数据库的安全性。在Node.js环境中,JavaScript可以直接写在服务器端,提供服务接口供前端调用,从而隐藏了数据库信息,除非服务器整个被黑客攻破,否则很难获取到数据库的一些信息,从而增加了系统的安全性。
4.多SQL模板支持及事务的支持。本申请能够支持多SQL模板,包括单一SQL模板以及支持单句SQL间数据传递(前一单句SQL执行后的结果集可作为后一单句SQL的输入参数)的SQL语句集模板,能够支持事务处理,提高了数据量庞大时SQL处理的运行速度,减少建立索引的数量,提高整体的数据库效率,增强了程序的健壮性、降低了程序的复杂度;可有效解决现有技术中SQL语句大多是直接在数据访问层作为字符串拼接,即便有程序编写成成型的框架也只能做简单的数据操作,如单表插入、单表查询或者单表更新等,不能够完成多表关联的操作,更不能完全支持事务的问题。在不支持事务的情况下,为保证业务逻辑的正确,需要在Javascript语言中增加更多的业务逻辑来容错,从而加大了代码的编写量和出错率。
5.数据库连接池的支持以及多数据库连接的支持。本提案中不仅支持数据库连接池的创建,还支持多种类型的数据库连接的创建。
在另一实施例中,在步骤S103之前,还可以包括:
步骤S102:读取对所述数据库进行操作的SQL信息,解析出SQL语句后按预设缓存格式缓存至内存缓冲区。
相应的,步骤S103中读取对应的SQL信息的方法,具体可以为:从内存缓冲区中读取对应的SQL语句。
本申请通过上述手段,在解决了现有技术需要在页面加载时才能创建数据库连接,当访问量过大时容易造成服务器过载崩溃的问题的基础上,还能够减少读取SQL语句时的I/O请求操作,提高页面的加载速度,减少请求的等待时间,提升用户的使用体验。
对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本申请还公开了一种在其上记录有用于执行上述方法的程序的计算机可读记录介质。所述计算机可读记录介质包括配置为以计算机(以计算机为例)可读的形式存储或传送信息的任何机制。例如,机器可读介质包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储介质、电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。
参照图3,示出了本申请数据库访问装置一实施例的结构框图,所述装置配置在按预设格式存储有数据库连接配置信息和对所述数据库进行操作的SQL信息的服务器中,所述装置包括:
数据库连接模块31,用于读取所述数据库连接配置信息,创建与所述数据库建立连接的数据库连接池。
信息缓存模块32,用于读取对所述数据库进行操作的SQL信息,解析出SQL语句后按预设缓存格式缓存至内存缓冲区。
信息读取模块33,用于接收客户端发出的数据访问请求,从内存缓冲区中读取对应的SQL语句。
本优选实施例中的SQL语句可以为单句SQL或SQL语句集;其中的SQL语句集包括多个单句SQL和/或单句SQL之间的传递参数集,当单句SQL之间有参数传递时,各单句SQL需要按顺序执行,并将上个单句SQL的执行结果参数作为下个单句SQL的输入参数。
语句执行模块34,用于执行SQL信息中包括的SQL语句,将执行结果集 反馈至所述客户端。
上述语句执行模块34具体包括:
单句SQL执行子模块,用于执行单句SQL,并将执行结果返回至客户端;
SQL语句集执行子模块,用于从SQL语句集的第一个单句SQL开始直至最后一个单句SQL,循环执行每个单句SQL,并将执行结果返回至客户端;当SQL语句集中的单句SQL之间有参数传递时,在执行当前单句SQL之前,从传递参数集中获取上个单句SQL的输出结果作为输入参数,在执行当前单句SQL之后,将当前单句SQL的执行结果写入传递参数集;其中,对于第一个单句SQL,输入参数为所述SQL语句集的输入参数。
在另一实施例中,上述数据库连接配置信息存储在XML格式的数据库连接配置文件中,所述对所述数据库进行操作的SQL信息存储在XML格式的SQL模板配置文件中,其中:所述数据库连接配置信息包括数据库类型、是否启用缓存机制、是否启用延迟加载、最大请求并发数、最大session数、最大并发事务数、是否启用命名空间、事务管理类型、数据源连接类型和SQL模板配置文件所在的路径;所述SQL信息包括参数类型、返回结果类型、是否有参数传递和SQL语句间的参数传递格式。
在具体实施时,服务器中可以配置Node.js平台,各功能模块采用Javascript语言实现并部署在Node.JS平台,使得本申请数据库访问装置基于Node.js平台执行。图4示出了配置有本申请数据库访问装置的web系统的运行时序,具体包括:
Node.js启动服务时,通过数据库连接模块31读取XML中的数据库连接配置信息,根据读取的信息创建数据库连接池。创建好数据库连接池后,再通过SQL信息缓存模块32读取所有的数据库访问SQL的XML文件并以一定格式加载到缓存中,完成服务启动流程。
将读取的SQL信息以预设缓存格式存在缓存中,是为了减少I/O请求操作,减少请求的等待时间,避免因为程序的书写规范而影响整个程序的效率。
当SQL信息读取模块33收到客户端的数据访问请求时,从缓存读取SQL信息;然后,通过SQL语句执行模块34执行SQL,并处理下结果集,然后将结果集返回给请求方,即完成一次数据库访问请求。不同的SQL信息不同处理 方式,需要区分是否支持事务和SQL间参数的传递。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。以上所描述的装置及装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的一种数据库访问方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据库访问方法,其特征在于,所述方法的执行主体为服务器,所述服务器按预设格式存储有对所述数据库进行操作的SQL信息,所述方法包括:
接收客户端发出的数据库访问请求,读取与所述数据库访问请求对应的SQL信息;
执行SQL信息中包括的SQL语句,将执行结果集反馈至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述SQL语句为单句SQL或SQL语句集;
所述SQL语句集包括多个单句SQL和/或单句SQL之间的传递参数集;对于SQL语句集,执行SQL语句的方法具体为:
判断所述SQL语句集中的单句SQL之间是否有参数传递;
若是,从第一个单句SQL开始直至最后一个单句SQL,循环执行下述过程:读取当前单句SQL,从传递参数集中获取上个单句SQL的输出结果作为输入参数,执行当前单句SQL,并将当前单句SQL的执行结果写入传递参数集;其中,对于第一个单句SQL,输入参数为所述SQL语句集的输入参数;若否,从第一个单句SQL开始直至最后一个单句SQL,循环读取并执行每个单句SQL。
3.根据权利要求2所述的方法,其特征在于,所述单句SQL包括插入语句、删除语句、修改语句和查询语句。
4.根据权利要求1所述的方法,其特征在于,在所述接收客户端发出的数据库访问请求之前,还包括:读取对所述数据库进行操作的SQL信息,解析出SQL语句后按预设缓存格式缓存至内存缓冲区;
所述读取对应的SQL信息,具体为:从内存缓冲区中读取对应的SQL语句。
5.根据权利要求1所述的方法,其特征在于,所述服务器还存储有预设格式的数据库连接配置信息;在接收客户端发出的数据库访问请求步骤之前,还包括:
读取所述数据库连接配置信息,创建与所述数据库建立连接的数据库连接池。
6.一种数据库访问装置,其特征在于,所述装置配置在服务器中,所述服务器按预设格式存储有对所述数据库进行操作的SQL信息,所述装置包括:
信息读取模块,用于接收客户端发出的数据访问请求,读取与所述数据库访问请求对应的SQL信息;
语句执行模块,用于执行SQL信息中包括的SQL语句,将执行结果集反馈至所述客户端。
7.根据权利要求6所述的装置,其特征在于,所述SQL语句为单句SQL或SQL语句集;所述SQL语句集包括多个单句SQL和/或单句SQL之间的传递参数集;所述语句执行模块具体包括:
单句SQL执行子模块,用于执行单句SQL,并将执行结果返回至客户端;
SQL语句集执行子模块,用于从SQL语句集的第一个单句SQL开始直至最后一个单句SQL,循环执行每个单句SQL,并将执行结果返回至客户端;当SQL语句集中的单句SQL之间有参数传递时,在执行当前单句SQL之前,从传递参数集中获取上个单句SQL的输出结果作为输入参数,在执行当前单句SQL之后,将当前单句SQL的执行结果写入传递参数集;其中,对于第一个单句SQL,输入参数为所述SQL语句集的输入参数。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:信息缓存模块,用于读取对所述数据库进行操作的SQL信息,解析出SQL语句后按预设缓存格式缓存至内存缓冲区;
所述信息读取模块读取对应的SQL信息,具体为:从内存缓冲区中读取对应的SQL语句。
9.根据权利要求6所述的装置,其特征在于,所述服务器还存储有预设格式的数据库连接配置信息;所述装置还包括:
数据库连接模块,用于读取所述数据库连接配置信息,创建与所述数据库建立连接的数据库连接池。
10.根据权利要求6~9任一所述的装置,其特征在于,所述服务器配置有Node.JS平台,组成所述装置的各功能模块为采用Javascript语言实现并部署在Node.JS平台的软件模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611150379.XA CN108228597A (zh) | 2016-12-14 | 2016-12-14 | 数据库访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611150379.XA CN108228597A (zh) | 2016-12-14 | 2016-12-14 | 数据库访问方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108228597A true CN108228597A (zh) | 2018-06-29 |
Family
ID=62637472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611150379.XA Pending CN108228597A (zh) | 2016-12-14 | 2016-12-14 | 数据库访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228597A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271409A (zh) * | 2018-11-08 | 2019-01-25 | 成都索贝数码科技股份有限公司 | 一种基于容器资源分配的数据库分片执行方法 |
CN109684415A (zh) * | 2018-12-27 | 2019-04-26 | 广东金杭科技有限公司 | 应用数据库多表事务处理算法 |
CN110489465A (zh) * | 2018-09-28 | 2019-11-22 | 北京数聚鑫云信息技术有限公司 | 一种数据库访问方法和装置 |
CN111984666A (zh) * | 2019-05-23 | 2020-11-24 | 北京数聚鑫云信息技术有限公司 | 数据库访问方法、装置、计算机可读存储介质和计算机设备 |
CN112162996A (zh) * | 2020-09-23 | 2021-01-01 | 金现代信息产业股份有限公司 | 站内图编辑器的数据库访问方法与系统 |
EP3772691A1 (en) * | 2019-08-09 | 2021-02-10 | Hitachi, Ltd. | Database server device, server system and request processing method |
WO2021051624A1 (zh) * | 2019-09-18 | 2021-03-25 | 平安科技(深圳)有限公司 | 数据获取方法、装置、电子设备及存储介质 |
WO2021208625A1 (zh) * | 2020-04-13 | 2021-10-21 | 中国银联股份有限公司 | 数据库访问方法以及装置 |
CN115544065A (zh) * | 2022-11-28 | 2022-12-30 | 北京数语科技有限公司 | 一种数据血缘发现方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN101196926A (zh) * | 2007-12-29 | 2008-06-11 | 中国建设银行股份有限公司 | 一种数据库访问平台及其访问方法 |
CN102385582A (zh) * | 2010-08-31 | 2012-03-21 | 中兴通讯股份有限公司 | 生产测试数据处理方法、服务器及系统 |
CN103823680A (zh) * | 2014-02-24 | 2014-05-28 | 广州精攻网络科技有限公司 | 一种游戏业务逻辑引擎的开发方法及装置 |
CN105718599A (zh) * | 2016-03-07 | 2016-06-29 | 深圳前海微众银行股份有限公司 | 数据库访问数据包解析的方法及装置 |
-
2016
- 2016-12-14 CN CN201611150379.XA patent/CN108228597A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567301A (zh) * | 2003-06-23 | 2005-01-19 | 华为技术有限公司 | 访问数据库的方法及装置 |
CN101196926A (zh) * | 2007-12-29 | 2008-06-11 | 中国建设银行股份有限公司 | 一种数据库访问平台及其访问方法 |
CN102385582A (zh) * | 2010-08-31 | 2012-03-21 | 中兴通讯股份有限公司 | 生产测试数据处理方法、服务器及系统 |
CN103823680A (zh) * | 2014-02-24 | 2014-05-28 | 广州精攻网络科技有限公司 | 一种游戏业务逻辑引擎的开发方法及装置 |
CN105718599A (zh) * | 2016-03-07 | 2016-06-29 | 深圳前海微众银行股份有限公司 | 数据库访问数据包解析的方法及装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489465A (zh) * | 2018-09-28 | 2019-11-22 | 北京数聚鑫云信息技术有限公司 | 一种数据库访问方法和装置 |
CN109271409B (zh) * | 2018-11-08 | 2021-11-02 | 成都索贝数码科技股份有限公司 | 一种基于容器资源分配的数据库分片执行方法 |
CN109271409A (zh) * | 2018-11-08 | 2019-01-25 | 成都索贝数码科技股份有限公司 | 一种基于容器资源分配的数据库分片执行方法 |
CN109684415A (zh) * | 2018-12-27 | 2019-04-26 | 广东金杭科技有限公司 | 应用数据库多表事务处理算法 |
CN111984666A (zh) * | 2019-05-23 | 2020-11-24 | 北京数聚鑫云信息技术有限公司 | 数据库访问方法、装置、计算机可读存储介质和计算机设备 |
CN111984666B (zh) * | 2019-05-23 | 2024-03-29 | 北京数聚鑫云信息技术有限公司 | 数据库访问方法、装置、计算机可读存储介质和计算机设备 |
EP3772691A1 (en) * | 2019-08-09 | 2021-02-10 | Hitachi, Ltd. | Database server device, server system and request processing method |
JP2021028771A (ja) * | 2019-08-09 | 2021-02-25 | 株式会社日立製作所 | データベースサーバ装置、サーバシステム及びリクエスト処理方法 |
JP7157716B2 (ja) | 2019-08-09 | 2022-10-20 | 株式会社日立製作所 | データベースサーバ装置、サーバシステム及びリクエスト処理方法 |
US11494448B2 (en) | 2019-08-09 | 2022-11-08 | Hitachi, Ltd. | Database server device, server system and request processing method |
WO2021051624A1 (zh) * | 2019-09-18 | 2021-03-25 | 平安科技(深圳)有限公司 | 数据获取方法、装置、电子设备及存储介质 |
WO2021208625A1 (zh) * | 2020-04-13 | 2021-10-21 | 中国银联股份有限公司 | 数据库访问方法以及装置 |
CN112162996A (zh) * | 2020-09-23 | 2021-01-01 | 金现代信息产业股份有限公司 | 站内图编辑器的数据库访问方法与系统 |
CN115544065A (zh) * | 2022-11-28 | 2022-12-30 | 北京数语科技有限公司 | 一种数据血缘发现方法、系统、设备及存储介质 |
CN115544065B (zh) * | 2022-11-28 | 2023-02-28 | 北京数语科技有限公司 | 一种数据血缘发现方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228597A (zh) | 数据库访问方法和装置 | |
US11847135B2 (en) | Blockchain node and transaction method | |
US8346747B2 (en) | Extending database tables in a multi-tenant environment | |
US9465841B2 (en) | Real-time security model providing intermediate query results to a user in a federated data system | |
CN105027120B (zh) | 多页面管理方法和装置 | |
CN104714965B (zh) | 静态资源去重方法、静态资源管理方法及装置 | |
US8418142B2 (en) | Architecture for data validation | |
CN105354328B (zh) | 一种解决NoSQL数据库并发访问冲突的系统及方法 | |
CN108664516A (zh) | 查询优化方法及相关装置 | |
CN110134705A (zh) | 一种数据查询方法、缓存服务器及终端 | |
Li et al. | An integration approach of hybrid databases based on SQL in cloud computing environment | |
CN109684282A (zh) | 一种构建元数据缓存的方法及装置 | |
CN108073587A (zh) | 一种自动问答方法、装置及电子设备 | |
US20100185928A1 (en) | Extensibility for web based diagram visualization | |
US20200272681A1 (en) | Just-In-Time Front End Template Generation Using Logical Document Object Models | |
US20230116336A1 (en) | API Governance Enforcement Architecture | |
CN110489696A (zh) | 缓存更新方法、装置及电子设备、存储介质 | |
WO2020215833A1 (zh) | 离线缓存方法、装置、终端及可读存储介质 | |
CN115017182A (zh) | 一种可视化的数据分析方法及设备 | |
CN112970011A (zh) | 记录查询优化中的谱系 | |
CN105335450B (zh) | 数据存储处理方法及装置 | |
US11900269B2 (en) | Method and apparatus for managing knowledge base, device and medium | |
CN112417225A (zh) | 一种多源异构数据的联合查询方法与系统 | |
CN108173948A (zh) | 一种分布式试验数据实时交换方法 | |
CN104572095B (zh) | 一种面向最终用户搭建Ajax应用的自适应方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180629 |
|
WD01 | Invention patent application deemed withdrawn after publication |