CN106815010A - 一种操作数据库的方法及装置 - Google Patents

一种操作数据库的方法及装置 Download PDF

Info

Publication number
CN106815010A
CN106815010A CN201611131416.2A CN201611131416A CN106815010A CN 106815010 A CN106815010 A CN 106815010A CN 201611131416 A CN201611131416 A CN 201611131416A CN 106815010 A CN106815010 A CN 106815010A
Authority
CN
China
Prior art keywords
content
text
database
user
target text
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.)
Granted
Application number
CN201611131416.2A
Other languages
English (en)
Other versions
CN106815010B (zh
Inventor
张利平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hengde Xinyi Technology Development Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201611131416.2A priority Critical patent/CN106815010B/zh
Priority to PCT/CN2017/076038 priority patent/WO2018103223A1/zh
Publication of CN106815010A publication Critical patent/CN106815010A/zh
Application granted granted Critical
Publication of CN106815010B publication Critical patent/CN106815010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种操作数据库的方法及装置,属于计算机程序开发技术领域。该方法包括:基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容;根据目标文本内容,向数据库服务器发送数据库命令行;获取数据库服务器的返回结果;在输出窗口中显示返回结果。本发明通过在检测到拓展程序启动时,获取用户要执行的目标文本内容。根据目标文本内容向数据库服务器发送数据库命令行。获取数据库服务器的返回结果并显示返回结果。由于可基于启动的拓展程序,根据打开的文本文件中显示的文本内容,来执行对应的数据库命令,而不用复制或手动键入数据库命令,从而节省了数据库命令执行时的命令输入时间,进而提高了数据库命令的执行效率。

Description

一种操作数据库的方法及装置
技术领域
本发明涉及计算机程序开发技术领域,更具体地,涉及一种操作数据库的方法及装置。
背景技术
随着计算机信息技术的快速发展,技术人员在进行程序开发时,通常需要执行数据库命令来测试程序在调用数据库时的输出结果。由于当数据库命令较复杂时,如何执行数据库命令影响着开发效率,从而如何执行数据库命令是个重点问题。现有操作数据库的方法主要是技术人员先创建一个数据库客户端实例,并在数据库客户端实例中手动键入数据库命令,从而通过数据库客户端实例执行数据库命令。
在实现本发明的过程中,发现现有技术至少存在以下问题:由于当数据库命令较复杂时,手动键入数据库命令需要耗费大量时间,且键入时容易出错,从而导致对数据库操作时不太方便,数据库命令的执行效率较低。
发明内容
本发明提供克服上述问题或者至少部分地解决上述问题的一种操作数据库的方法及装置。
根据本发明的一方面,提供了一种操作数据库的方法,该方法包括:
基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容,显示的文本内容至少包含数据库命令行;
根据目标文本内容,向数据库服务器发送数据库命令行;
获取数据库服务器的返回结果;
在输出窗口中显示返回结果。
根据本发明的另一方面,提供了一种操作数据库的装置,该装置包括:
第一获取模块,用于基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容,显示的文本内容至少包含数据库命令行;
发送模块,用于根据目标文本内容,向数据库服务器发送数据库命令行;
第二获取模块,用于获取数据库服务器的返回结果;
显示模块,用于在输出窗口中显示返回结果。
本申请提出的技术方案带来的有益效果是:
通过基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容。根据目标文本内容,向数据库服务器发送数据库命令行。获取数据库服务器的返回结果。在输出窗口中显示返回结果。由于可基于启动的拓展程序,根据打开的文本文件中显示的文本内容,来执行对应的数据库命令,而不用复制或手动键入数据库命令,从而节省了数据库命令执行时的命令输入时间,进而提高了数据库命令的执行效率。
另外,由于在预设文本编辑器中可打开多个文本文件,当用户需要执行大量数据库命令时,可将数据库命令拆分成多个文本文件,通过打开多个文本文件分别执行对应的数据库命令,从而能够便于用户对数据库命令的执行流程进行管理。
附图说明
图1为本发明实施例的一种操作数据库的方法的流程示意图;
图2为本发明实施例的一种操作数据库的方法的流程示意图;
图3为本发明实施例的一种文本内容的显示示意图;
图4为本发明实施例的一种数据库命令执行结果的显示示意图;
图5为本发明实施例的一种操作数据库的装置的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
现有操作数据库的方法主要是由技术人员先通过数据库软件创建一个数据库客户端实例,并在数据库客户端实例中手动键入数据库命令。或者,复制一段数据库命令至数据库客户端实例。由于上述两种方式都需要手动创建数据库客户端实例,且无论是手动键入还是复制数据库命令均耗费较长时间并容易出错,从而导致对数据库操作时不太方便,数据库命令的执行效率较低。
针对现有技术中的问题,本发明实施例提供了一种操作数据库的方法。本实施例及后续实施例所提供的一种操作数据库的方法,适用于安装任一类型操作系统的终端。其中,适用的操作系统可以为Windows操作系统、Linux操作系统或OS X操作系统,本实施例对此不作具体限定。参见图1,本实施例提供的方法流程包括:101、基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容;102、根据目标文本内容,向数据库服务器发送数据库命令行;103、获取数据库服务器的返回结果;104、在输出窗口中显示返回结果。
其中,显示的文本内容至少包含数据库命令行,本实施例及后续实施例对此不作具体限定。数据库服务器可以为Redis服务器、SSDB服务器或Hbase服务器等,本实施例及后续实施例对此不作具体限定。
本发明实施例提供的方法,通过基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容。根据目标文本内容,向数据库服务器发送数据库命令行。获取数据库服务器的返回结果。在输出窗口中显示返回结果。由于可基于启动的拓展程序,根据打开的文本文件中显示的文本内容,来执行对应的数据库命令,而不用复制或手动键入数据库命令,从而节省了数据库命令执行时的命令输入时间,进而提高了数据库命令的执行效率。
另外,由于在预设文本编辑器中可打开多个文本文件,当用户需要执行大量数据库命令时,可将数据库命令拆分成多个文本文件,通过打开多个文本文件分别执行对应的数据库命令,从而能够便于用户对数据库命令的执行流程进行管理。
作为一种可选实施例,获取用户要执行的目标文本内容之前,还包括:
检测用户对文本文件的打开指令;
当检测到打开指令时,通过预设文本编辑器,显示用户打开的目标文本文件中的文本内容。
其中,预设文本编辑器可以为程序开发所使用的开源文本编辑器,如VisualStudio Code(简称VS Code)、Sublime Text、Atom、VIM或Notepad++等,本实施例及后续实施例对此不作具体限定。
作为一种可选实施例,获取用户要执行的目标文本内容之前,还包括:
当检测到用户对预设快捷键的输入指令时,启动拓展程序;
或者,当检测到用户对右键菜单中预设选项的选中指令时,启动拓展程序。
作为一种可选实施例,获取用户要执行的目标文本内容,包括:
检测用户对文本内容的选中指令;
当检测到选中指令时,根据选中指令所对应的文本选中范围,获取用户要执行的目标文本内容。
作为一种可选实施例,检测用户对文本内容的选中指令之后,还包括:
当未检测到选中指令时,获取文本内容,并将文本内容作为用户要执行的目标文本内容。
作为一种可选实施例,根据目标文本内容,向数据库服务器发送数据库命令行之前,还包括:
创建数据库客户端实例;
通过数据库客户端实例,连接数据库服务器。
作为一种可选实施例,通过数据库客户端实例,连接数据库服务器,包括:
获取文本内容中的预设连接地址;
通过数据库客户端实例,连接预设连接地址对应的数据库服务器。
作为一种可选实施例,获取文本内容中的预设连接地址,包括:
对文本内容中的每一行内容进行检测;
当在任一行内容中检测到第一预设字符时,获取任一行内容中第一预设字符后面的字符串,将字符串作为预设连接地址。
作为一种可选实施例,对文本内容中的每一行内容进行检测之后,包括:
当在每一行内容中未检测到第一预设字符或第一预设字符后面为空字符串时,通知用户无法连接数据库服务器。
作为一种可选实施例,根据目标文本内容,向数据库服务器发送数据库命令行,包括:
根据目标文本内容中的第二预设字符,将目标文本内容拆分成数据库命令行集合;
基于数据库命令行集合,向数据库服务器发送数据库命令及参数。
作为一种可选实施例,基于数据库命令行集合,向数据库服务器发送数据库命令行,包括:
对于数据库命令行集合中任一数据库命令行,当检测到任一数据库命令行不为空且不包含第一预设字符时,获取任一数据库命令行对应的数据库命令及参数。
向数据库服务器发送任一数据库命令行对应的数据库命令及参数。
作为一种可选实施例,在输出窗口中显示返回结果,包括:
向输出窗口写入返回结果;
通过调用输出窗口实例的显示方法,在输出窗口中显示返回结果。
作为一种可选实施例,向输出窗口写入返回结果,包括:
获取返回结果的数据类型;
当返回结果的数据类型为数字时,向输出窗口写入返回数字对应的数据类型及返回的数字;
当返回结果的数据类型为字符串时,向输出窗口写入返回的字符串;
当返回结果的数据类型为空对象时,向输出窗口写入预设关键字;
当返回结果的数据类型为对象时,将返回的对象转换为字符串,向输出窗口写入转换后的字符串。
作为一种可选实施例,预设文本编辑器为VS Code,数据库服务器为Redis服务器,获取用户要执行的目标文本内容,包括:
调用vscode.window.activeTextEditor.selection.isEmpty接口,检测用户是否对文本内容进行选中;
基于接口返回的数值,当检测到用户对文本内容进行选中时,以vscode.window.activeTextEditor.selection为参数,调用vscode.window.activeTextEditor.document.getText方法获取用户要执行的目标文本内容;
当检测到用户未对文本内容进行选中时,调用vscode.window.activeTextEditor.document.getText方法,获取文本内容,并将文本内容作为用户要执行的目标文本内容。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
基于上述图1对应实施例中的内容,本发明实施例提供了一种操作数据库的方法。为了便于对方案进行阐述,本实施例以预设文本编辑器为VS Code,数据库为Redis为例,来对数据库命令执行方法的过程进行说明。其中,VS Code是一个由微软开发且同时支持Windows、Linux及OS X操作系统的开源文本编辑器,VS Code支持扩展程序并内置了扩展程序管理功能。Redis是一个开源、支持网络且基于内存的键值对存储数据库。
参见图2,本实施例提供的方法流程包括:201、检测用户对文本文件的打开指令;202、当检测到打开指令时,通过VS Code显示用户打开的目标文本文件中的文本内容;203、基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容;204、根据目标文本内容,向Redis服务器发送数据库命令行;205、获取Redis服务器的返回结果;206、在VS Code的输出窗口中显示返回结果。
其中,201、检测用户对文本文件的打开指令。
由于本实施例提供的方法主要是基于在VS Code中打开的文本文件,实现执行文本文件中的数据库命令,从而在执行本步骤之前,用户(即相关程序开发人员)可以根据实际需求预先编辑包含数据库命令行的文本文件,本实施例对此不作具体限定。其中,用户根据实际程序开发需求,可编辑多个包含数据库命令行的文本文件存储在预设目录中。
在执行本步骤时,可检测用户对文本文件的打开指令。相应地,用户可在预设目录中选中一个包含数据库命令行的文本文件,并通过VS Code打开该文本文件,即输入打开指令。
其中,202、当检测到打开指令时,通过VS Code,显示用户打开的目标文本文件中的文本内容。
本步骤主要是通过VS Code打开文本文件的过程,打开的文本文件可作为目标文本文件。其中,目标文本文件中的文本内容可包含数据库命令行、Redis服务器的地址及连接端口等,本实施例不对目标文本文件包含的内容作具体限定。
需要说明的是,本步骤的后续步骤主要是将打开的文本文件作为目标文本文件,基于目标文本文件实现执行数据库命令的过程。由于文本编辑器通常支持同时打开多个文本文件,从而在本次打开目标文本文件之前,用户可以按照本步骤及上述步骤201打开多个其它的文本文件,本实施例对此不作具体限定。相应地,用户后续除了可对本次打开的目标文本文件进行操作以实现执行数据库命令之外,还可以对之前打开目标文本文件进行操作以实现执行数据库命令,本实施例对此不作具体限定。
例如,用户本次打开了目标文本文件3,而用户之前还打开了目标文本文件1及目标文本文件2。用户后续除了可对目标文本文件3进行操作,以执行目标文本文件3中的数据库命令之外,还可以对目标文本文件1或目标文本文件2进行操作,从而分别执行目标文本文件1或目标文本文件2中的数据库命令。
基于上述内容,需要说明的是,本实施例的后续步骤仅对执行文本文件中数据库命令的过程进行说明。然而,具体执行的是本次打开的目标文本文件中的数据库命令,还是执行用户之前打开的目标文本文件中的数据库命令,本实施例对此不作具体限定。实际实施中,具体执行哪个文本文件以VS Code显示的焦点文件为主,显示的焦点文件即为目标文本文件。基于方案的完整性且为了便于说明,本实施例的后续步骤主要以本次打开的目标文本文件为例,对数据库命令的执行过程进行说明。
其中,203、基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容。
由于本实施例主要是在VS Code中实现数据库命令的执行,即对VS Code的功能进行了拓展,执行相应的拓展程序以实现执行数据库命令,从而在执行本步骤之前还可以启动拓展程序。本实施例不对启动拓展程序的方式作具体限定,包括但不限于:当检测到用户对预设快捷键的输入指令时,启动拓展程序;或者,当检测到用户对右键菜单中预设选项的选中指令时,启动拓展程序。
例如,用户可通过键盘键入“ctrl+enter”以启动拓展程序。或者,用户还可以通过点击鼠标右键,在右键菜单中点击“redisCli”选项以启动拓展程序。其中,“ctrl+enter”即为预设快捷键,可由用户自行设置。“redisCli”为拓展程序名称,同样可由用户自行设置,本实施例对此不作具体限定。
具体地,在启动拓展程序之前,用户可利用VS Code官方提供的Yeoman VS CodeExtension generator工具,生成一份骨架代码。向骨架代码的package.json文件中contributes项中加入以下代码,以支持通过快捷键或右键菜单选项启动拓展程序:
该过程通过VS Code的内置方案,向项目配置文件package.json中加入对应的配置。当VS Code启动时,拓展的package.json文件便会被读取,并且VS Code还会对package.json文件中的contributes项的内容做处理。
上述配置完成后,通过向骨架代码的extension.ts文件中加入拓展程序的具体实现代码,从而实现通过点击右键菜单选项或使用快捷键运行扩展程序。相应地,本步骤及后续步骤主要是拓展程序的具体实现过程。需要说明的是,由于后续实现过程需要调用VSCode模块和NodeRedis模块的相关接口,从而拓展程序在启动后可导入VS Code模块和NodeRedis模块,本实施对此不作具体限定。其中,NodeRedis为Node环境下的Redis客户端库。
基于上述过程,拓展程序在启动后,由于VS Code显示的文本内容主要为数据库命令行,从而用户在启动拓展程序之前可指定显示的文本内容中哪些数据库命令行需要执行。相应地,本实施例不对获取用户要执行的目标文本内容的方式作具体限定,包括但不限于:检测用户对文本内容的选中指令;当检测到选中指令时,根据选中指令所对应的文本选中范围,获取用户要执行的目标文本内容。
例如,用户可通过鼠标指针对显示的文本内容进行选中,从而终端可根据用户选中的文本范围,获取用户要执行的目标文本内容。
由于用户在启动拓展程序之后,用户之前可能并未选中任何显示的文本内容,此时可将所有文本内容作为用户要执行的目标文本内容,本实施例对此不作具体限定。
基于拓展程序导入的VS Code模块,上述获取目标文本内容的过程,可通过调用vscode.window.activeTextEditor.selection.isEmpty接口,判断当前显示的文本内容是否有被选中的内容。当检测到被选中的内容时,可通过调用vscode.window.activeTextEditor.document.getText()方法,该方法参数为vscode.window.activeTextEditor.selection,以获取选中的目标文本内容。当没有检测到被选中的内容时,可通过调用vscode.window.activeTextEditor.document.getText()方法,获取显示的所有文本内容,并作为用户要执行的目标文本内容。
其中,204、根据目标文本内容,向Redis服务器发送数据库命令行。
由于后续步骤需要执行数据库命令,而在执行数据库命令之前需要与Redis服务器进行连接,从而在执行本步骤之前若检测到没有连接至Redis服务器,可先与Redis服务器进行连接。本实施例不对连接Redis服务器的方式作具体限定,包括但不限于:创建Redis客户端实例;通过Redis客户端实例,连接Redis服务器。
在创建Redis客户端实例时,可通过调用NodeRedis模块提供的createClient接口,创建一个Redis客户端实例,本实施例对此不作具体限定。由于在连接Redis服务器之前,需要先知道Redis服务器的地址,从而可先获取Redis服务器的地址。相应地,本实施例不对通过Redis客户端实例,连接Redis服务器的方式作具体限定,包括但不限于:获取文本内容中的预设连接地址;通过Redis客户端实例,连接预设连接地址对应的Redis服务器。其中,预设连接地址即为Redis服务器的地址。
由于用户在编辑文本文件时,可在文本文件中置入要连接的Redis服务器对应的地址,从而可在显示的文本内容中检测出预设连接地址。关于获取文本内容中的预设连接地址的方式,本实施例对此不作具体限定,包括但不限于:对文本内容中的每一行内容进行检测;当在任一行内容中检测到第一预设字符时,获取任一行内容中第一预设字符后面的字符串,将字符串作为预设连接地址。
用户在编辑文本文件中的文本内容时,对于每一行内容,可预先约定第一预设字符后面的字符串为预设连接地址,本实施例对此不作具体限定。其中,第一预设字符可根据用户习惯自行设置,本实施例对此不作具体限定。预设连接地址可包括Redis主机地址、端口号及密码等信息,本实施例不对预设连接地址的内容作具体限定。
例如,以用户要执行的目标文本内容为显示的所有文本内容为例。图3为VS Code显示的文本内容,也即为用户要执行的目标文本内容。在图3中,第一预设字符为“#!”。通过对每一行内容进行检测,可确定第一行内容中包含第一预设字符“#!”。通过调用vscode.window.activeTextEditor.document.getText()接口,可获取第一行内容。过滤掉第一行内容中的“#!”,可获取“#!”后面的字符串“Redis://127.0.0.1:6379”,并作为Redis服务器的预设连接地址。
由于存在找不到预设连接地址的可能性,从而对文本内容中的每一行内容进行检测之后,当在每一行内容中未检测到第一预设字符或第一预设字符后面为空字符串时,可通知用户无法连接Redis服务器,本实施例对此不作具体限定。具体地,在向用户通知时,可通过调用vscode.window.showErrorMessage()方法,向用户报告预设连接地址URL(Uniform Resoure Locator,统一资源定位器)为空。同时,还可以自动退出拓展程序以停止执行数据库命令,本实施例对此不作具体限定。
在获取到预设连接地址URL后,创建的Redis客户端实例可以获取到的URL作为参数,连接对应的Redis服务器。当连接至Redis服务器后,可再执行本步骤204。由于目标文件内容中可能会包含多条命令行,而Redis服务器在执行数据库命令行时需要一条条地执行,从而可对目标文本内容进行拆分,向Redis服务器发送单条命令行。
相应地,本实施例不对根据目标文本内容,向Redis服务器发送数据库命令行的方式作具体限定,包括但不限于:根据目标文本内容中的第二预设字符,将目标文本内容拆分成数据库命令行集合;基于数据库命令行集合,向Redis服务器发送数据库命令及参数。其中,第二预设字符可根据用户在编辑文本文件时自行设置,本实施例对此不作具体限定。
例如,如图3所示。在图3中,第二预设字符为换行符。通过将换行符作为分隔符,将每一行内容作为一个数组项,可将目标文本内容拆分成一个以行内容为数组项的数组。其中,数组即为数据库命令行集合,目标文本内容的行数即为数组的项数。
在得到数据库命令行集合后,可向Redis服务器发送数据库命令及参数。本实施例不对基于数据库命令行集合,向Redis服务器发送数据库命令及参数的方式作具体限定,包括但不限于:对于数据库命令行集合中任一数据库命令行,当检测到任一数据库命令行不为空且不包含第一预设字符时,获取任一数据库命令行对应的数据库命令及参数。向Redis服务器发送任一数据库命令行对应的数据库命令及参数。
由图3可知,目标文本内容中可能会包含空行或者非数据库命令行。例如,在图3中第2行与第7行为空行。第1行的内容包含第一预设字符“#!”及预设连接地址,而非数据库命令行。因此,对于数据库命令行集合中任一数据库命令行,先要对该数据库命令行进行检测。当检测到该数据库命令行不为空且不包含第一预设字符时,可获取该数据库命令行对应的数据库命令及参数。
对于任一数据库命令行,本实施例不对获取任一数据库命令行对应的数据库命令及参数的方式作具体限定,包括但不限于:按照第三预设字符对任一数据库命令行进行切分,将切分得到的第一项内容作为数据库命令,将切分得到的后续内容作为参数。其中,第三预设字符可以为空格,本实施例对此不作具体限定。
例如,如图3所示。以第3行的内容为例,可将第3行的行内容按照空格进行切分,并将切分后得到的每一项内容存入数组中。相应地,数组第一项内容“set”即为数据库命令,数组的第二项内容“mykey”及第三项内容“hello”即为参数。
在获取数据命令行对应的数据库命令及参数后,可通过调用Redis客户端的send_command接口,传入得到的数据库命令及参数。通过该接口向Redis服务器发送数据库命令及参数,并等待返回结果。
其中,205、获取Redis服务器的返回结果。
通过上述步骤204,在向Redis服务器发送数据库命令及参数之后,Redis服务器可根据参数执行数据库命令,并返回相应的结果。
例如,图3中第3行内容中数据库命令为“set”,参数分别为“mykey”及“hello”,其对应的含义为将“mykey”键的键值设置为“hello”。Redis服务器在执行这条数据库命令时,如果设置成功的话,返回结果为字符串“OK”。同理,对于第4行内容对应的数据库命令,Redis服务器的返回结果为字符串“hello”。对于第5行内容对应的数据库命令,Redis服务器的返回结果为删除键的个数,即整数“1”。对于第5行内容对应的数据库命令,由于之前已经对键进行删除,从而Redis服务器的返回结果为空对象。
其中,206、在VS Code的输出窗口中显示返回结果。
在执行本步骤之前,可先创建一个输出窗口实例,以显示返回结果。具体地,可通过调用vscode.window.createOutputChannel()接口,创建一个输出窗口实例,本实施例对此不作具体限定。
关于在VS Code的输出窗口中显示返回结果的方式,本实施例对此不作具体限定,包括但不限于:向输出窗口写入返回结果;通过调用输出窗口实例的显示方法,在输出窗口中显示返回结果。
在向输出窗口写入返回结果之前,可先向输出窗口写入Redis服务器的预设连接地址、端口、执行的数据库命令及参数,本实施例对此不作具体限定。具体地,可通过调用输出窗口实例的appendLine方法进行写入,本实施例对此不作具体限定。基于上述写入过程,后续在显示返回结果时,能让用户清楚地了解到每条数据库命令是哪个Redis服务器执行的、执行端口是什么以及每条数据库命令对应的执行结果是什么,即达到便于用户查看的目的。
由于返回结果对应的数据类型决定了如何将返回结果写入输出窗口,从而可根据返回结果的数据类型,对返回结果进行写入。相应地,本实施例不对向输出窗口写入返回结果的方式作具体限定,包括但不限于:获取返回结果的数据类型;当返回结果的数据类型为数字时,向输出窗口写入返回数字对应的数据类型及返回的数字;当返回结果的数据类型为字符串时,向输出窗口写入返回的字符串;当返回结果的数据类型为空对象时,向输出窗口写入预设关键字;当返回结果的数据类型为对象时,将返回的对象转换为字符串,向输出窗口写入转换后的字符串。
例如,图4为对Redis服务器的返回结果进行显示后的示意图。在图4中,output表示下列内容为返回结果。“127.0.0.1:6379>set mykeyhello”为Redis服务器的预设连接地址、端口、执行的数据库命令及参数,主要是为了与下面的返回结果“OK”对应,让用户清楚地了解每条数据库命令与其对应的返回结果。由于返回结果“OK”的数据类型为字符串,从而可向输出窗口写入返回的字符串“OK”。
同理,当返回结果的数据类型为数字时,如图4所示,可向输出窗口写入返回数字对应的数据类型“(interger)”整型,再写入返回的数字“1”。
当返回结果的数据类型为空对象时,如图4所示,可向输出窗口写入预设关键字“(nil)”。其中,关键字nil表示无值。
当返回结果的数据类型为对象时,可通过调用JSON的stringify方法将对象转换成字符串,向输出窗口写入转换后的字符串。其中,JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换语言,以文字为基础且易于让人阅读。
需要说明的是,在向输出窗口写入返回结果时,同样可调用输出窗口实例的appendLine方法进行写入,本实施例对此不作具体限定。在向输出窗口写入返回结果后,可通过调用输出窗口实例的show方法,显示返回结果。
另外,当对返回结果进行显示后,可调用Redis客户端实例的quit方法以关闭Redis连接。或者,考虑到用户可能还要继续执行数据库命令,从而还可以重新执行上述步骤201至本步骤206的过程,本实施例对此不作具体限定。
本发明实施例提供的方法,通过检测用户对文本文件的打开指令。当检测到打开指令时,通过VS Code,显示用户打开的目标文本文件中的文本内容。基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容。根据目标文本内容,向Redis服务器发送数据库命令行。获取Redis服务器的返回结果。在VS Code的输出窗口中显示返回结果。由于可基于启动的拓展程序,根据打开的文本文件中显示的文本内容,来执行对应的数据库命令,而不用复制或手动键入数据库命令,从而节省了数据库命令执行时的命令输入时间,进而提高了数据库命令的执行效率。
另外,由于在预设文本编辑器中可打开多个文本文件,当用户需要执行大量数据库命令时,可将数据库命令拆分成多个文本文件,通过打开多个文本文件分别执行对应的数据库命令,从而能够便于用户对数据库命令的执行流程进行管理。
最后,由于在执行数据库命令时,可通过检测到的预设连接地址,自动连接对应的数据库服务器,从而进一步地提高了数据库命令的执行效率。
本发明实施例提供了一种操作数据库的装置,该装置用于执行上述图1或图2对应的实施例所提供的一种操作数据库的方法。参见图5,该装置包括:
第一获取模块501,用于基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容,文本内容至少包含数据库命令行;
发送模块502,用于根据目标文本内容,向数据库服务器发送数据库命令行;
第二获取模块503,用于获取数据库服务器的返回结果;
第一显示模块504,用于在输出窗口中显示返回结果。
作为一种可选实施例,该装置还包括:
检测模块,用于检测用户对文本文件的打开指令;
第二显示模块,用于在检测到打开指令时,通过预设文本编辑器,显示用户打开的目标文本文件中的文本内容。
作为一种可选实施例,该装置还包括:
启动模块,用于在检测到用户对预设快捷键的输入指令时,启动拓展程序;或者,当检测到用户对右键菜单中预设选项的选中指令时,启动拓展程序。
作为一种可选实施例,第一获取模块501,包括:
检测单元,用于检测用户对文本内容的选中指令;
第一获取单元,用于在检测到选中指令时,根据选中指令所对应的文本选中范围,获取用户要执行的目标文本内容。
作为一种可选实施例,第一获取模块501,还包括:
第二获取单元,用于在未检测到选中指令时,获取文本内容,并将文本内容作为用户要执行的目标文本内容。
作为一种可选实施例,该装置还包括:
创建模块,用于创建数据库客户端实例;
连接模块,用于通过数据库客户端实例,连接数据库服务器。
作为一种可选实施例,连接模块,包括:
第三获取单元,用于获取文本内容中的预设连接地址;
连接单元,用于通过数据库客户端实例,连接预设连接地址对应的数据库服务器。
作为一种可选实施例,第三获取单元,用于对文本内容中的每一行内容进行检测;当在任一行内容中检测到第一预设字符时,获取任一行内容中第一预设字符后面的字符串,将字符串作为预设连接地址。
作为一种可选实施例,第三获取单元,当在每一行内容中未检测到第一预设字符或第一预设字符后面为空字符串时,通知用户无法连接数据库服务器。
作为一种可选实施例,发送模块502,包括:
拆分单元,用于根据目标文本内容中的第二预设字符,将目标文本内容拆分成数据库命令行集合;
发送单元,用于基于数据库命令行集合,向数据库服务器发送数据库命令及参数。
作为一种可选实施例,发送单元,用于对于数据库命令行集合中任一数据库命令行,当检测到任一数据库命令行不为空且不包含第一预设字符时,获取任一数据库命令行对应的数据库命令及参数;向数据库服务器发送任一数据库命令行对应的数据库命令及参数。
作为一种可选实施例,第一显示模块,包括:
写入单元,用于向输出窗口写入返回结果;
显示单元,用于通过调用输出窗口实例的显示方法,在输出窗口中显示返回结果。
作为一种可选实施例,写入单元,用于获取返回结果的数据类型;当返回结果的数据类型为数字时,向输出窗口写入返回数字对应的数据类型及返回的数字;当返回结果的数据类型为字符串时,向输出窗口写入返回的字符串;当返回结果的数据类型为空对象时,向输出窗口写入预设关键字;当返回结果的数据类型为对象时,将返回的对象转换为字符串,向输出窗口写入转换后的字符串。
作为一种可选实施例,第一获取模块501,用于调用vscode.window.activeTextEditor.selection.isEmpty接口,检测用户是否对文本内容进行选中;基于接口返回的数值,当检测到用户对文本内容进行选中时,以vscode.window.activeTextEditor.selection为参数,调用vscode.window.activeTextEditor.document.getText方法获取用户要执行的目标文本内容;当检测到用户未对文本内容进行选中时,调用vscode.window.activeTextEditor.document.getText方法,获取文本内容,并将文本内容作为用户要执行的目标文本内容。
本发明实施例提供的装置,通过基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容。根据目标文本内容,向数据库服务器发送数据库命令行。获取数据库服务器的返回结果。在输出窗口中显示返回结果。由于可基于启动的拓展程序,根据打开的文本文件中显示的文本内容,,来执行对应的数据库命令,而不用复制或手动键入数据库命令,从而节省了数据库命令执行时的命令输入时间,进而提高了数据库命令的执行效率。
另外,由于在预设文本编辑器中可打开多个文本文件,当用户需要执行大量数据库命令时,可将数据库命令拆分成多个文本文件,通过打开多个文本文件分别执行对应的数据库命令,从而能够便于用户对数据库命令的执行流程进行管理。
最后,由于在执行数据库命令时,可通过检测到的预设连接地址,自动连接对应的数据库服务器,从而进一步地提高了数据库命令的执行效率。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种操作数据库的方法,其特征在于,所述方法包括:
基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容,显示的文本内容至少包含数据库命令行;
根据所述目标文本内容,向数据库服务器发送数据库命令行;
获取所述数据库服务器的返回结果;
在输出窗口中显示所述返回结果。
2.根据权利要求1所述的方法,其特征在于,所述获取用户要执行的目标文本内容之前,还包括:
检测用户对文本文件的打开指令;
当检测到打开指令时,通过所述预设文本编辑器,显示用户打开的目标文本文件中的文本内容。
3.根据权利要求1所述的方法,其特征在于,所述获取用户要执行的目标文本内容,包括:
检测用户对所述文本内容的选中指令;
当检测到选中指令时,根据所述选中指令所对应的文本选中范围,获取用户要执行的目标文本内容。
4.根据权利要求1所述的方法,其特征在于,所述根据所述目标文本内容,向数据库服务器发送数据库命令行之前,还包括:
创建数据库客户端实例;
通过所述数据库客户端实例,连接数据库服务器。
5.根据权利要求4所述的方法,其特征在于,所述通过所述数据库客户端实例,连接数据库服务器,包括:
获取所述文本内容中的预设连接地址;
通过所述数据库客户端实例,连接所述预设连接地址对应的数据库服务器。
6.根据权利要求5所述的方法,其特征在于,所述获取所述文本内容中的预设连接地址,包括:
对所述文本内容中的每一行内容进行检测;
当在任一行内容中检测到第一预设字符时,获取所述任一行内容中所述第一预设字符后面的字符串,将所述字符串作为预设连接地址。
7.根据权利要求1所述的方法,其特征在于,所述根据所述目标文本内容,向数据库服务器发送数据库命令行,包括:
根据所述目标文本内容中的第二预设字符,将所述目标文本内容拆分成数据库命令行集合;
基于所述数据库命令行集合,向所述数据库服务器发送数据库命令及参数。
8.根据权利要求1所述的方法,其特征在于,所述在输出窗口中显示所述返回结果,包括:
向所述输出窗口写入所述返回结果;
通过调用输出窗口实例的显示方法,在所述输出窗口中显示所述返回结果。
9.根据权利要求1或2所述的方法,其特征在于,所述预设文本编辑器为VS Code,所述数据库服务器为Redis服务器,所述获取用户要执行的目标文本内容,包括:
调用vscode.window.activeTextEditor.selection.isEmpty接口,检测用户是否对所述文本内容进行选中;
基于所述接口返回的数值,当检测到用户对所述文本内容进行选中时,以vscode.window.activeTextEditor.selection为参数,调用vscode.window.activeTextEditor.document.getText方法获取用户要执行的目标文本内容;
当检测到用户未对所述文本内容进行选中时,调用vscode.window.activeTextEditor.document.getText方法,获取所述文本内容,并将所述文本内容作为用户要执行的目标文本内容。
10.一种操作数据库的装置,其特征在于,所述装置包括:
第一获取模块,用于基于显示的文本内容,当检测到拓展程序启动时,获取用户要执行的目标文本内容,显示的文本内容至少包含数据库命令行;
发送模块,用于根据所述目标文本内容,向数据库服务器发送数据库命令行;
第二获取模块,用于获取所述数据库服务器的返回结果;
第一显示模块,用于在输出窗口中显示所述返回结果。
CN201611131416.2A 2016-12-09 2016-12-09 一种操作数据库的方法及装置 Active CN106815010B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611131416.2A CN106815010B (zh) 2016-12-09 2016-12-09 一种操作数据库的方法及装置
PCT/CN2017/076038 WO2018103223A1 (zh) 2016-12-09 2017-03-09 一种操作数据库的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611131416.2A CN106815010B (zh) 2016-12-09 2016-12-09 一种操作数据库的方法及装置

Publications (2)

Publication Number Publication Date
CN106815010A true CN106815010A (zh) 2017-06-09
CN106815010B CN106815010B (zh) 2021-01-01

Family

ID=59107080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611131416.2A Active CN106815010B (zh) 2016-12-09 2016-12-09 一种操作数据库的方法及装置

Country Status (2)

Country Link
CN (1) CN106815010B (zh)
WO (1) WO2018103223A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109635041A (zh) * 2018-12-04 2019-04-16 山东中创软件商用中间件股份有限公司 基于Sqoop工具的数据传输方法、装置、设备及介质
CN111857752B (zh) * 2020-07-22 2023-08-08 浪潮商用机器有限公司 一种PostgreSQL数据库安装方法、装置及设备
CN112765914A (zh) * 2021-01-22 2021-05-07 上海华虹宏力半导体制造有限公司 在版图设计窗口下自动选择设计层的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227323A (zh) * 2008-01-15 2008-07-23 中兴通讯股份有限公司 实现界面配置和命令行配置同步操作数据的方法及系统
US20100162201A1 (en) * 2008-12-18 2010-06-24 Sap Ag Automated multi-platform configuration tool for master data management systems using secure shell protocol
CN102915237A (zh) * 2011-06-30 2013-02-06 国际商业机器公司 根据用户应用程序要求改写数据质量规则的方法和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549114B2 (en) * 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
CN103064960B (zh) * 2012-12-31 2016-09-07 华为技术有限公司 数据库查询方法及设备
CN105488081A (zh) * 2014-10-13 2016-04-13 镇江鼎拓科技信息有限公司 一种基于asp技术的数据库连接方法
CN105677916A (zh) * 2016-03-02 2016-06-15 浪潮软件集团有限公司 一种关于Redis使用的方法
CN105956160A (zh) * 2016-05-17 2016-09-21 武汉邮电科学研究院 一种Android应用访问数据库的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227323A (zh) * 2008-01-15 2008-07-23 中兴通讯股份有限公司 实现界面配置和命令行配置同步操作数据的方法及系统
US20100162201A1 (en) * 2008-12-18 2010-06-24 Sap Ag Automated multi-platform configuration tool for master data management systems using secure shell protocol
CN102915237A (zh) * 2011-06-30 2013-02-06 国际商业机器公司 根据用户应用程序要求改写数据质量规则的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
团长: "《VsCode操作MS SQL server》", 《VSCODE操作MS SQL SERVER》 *

Also Published As

Publication number Publication date
WO2018103223A1 (zh) 2018-06-14
CN106815010B (zh) 2021-01-01

Similar Documents

Publication Publication Date Title
US8984339B2 (en) System and method for test case generation using components
US7707518B2 (en) Linking information
US8099400B2 (en) Intelligent storing and retrieving in an enterprise data system
CN1790326B (zh) 同步自然语言输入元素和图形用户界面的系统和方法
US10831453B2 (en) Connectors framework
KR101183404B1 (ko) 자동 검색 메뉴와의 사용자 인터페이스를 제공하는 시스템및 방법
US9251296B2 (en) Interactively setting a search value in a data finder tool
US9081899B2 (en) System and method for processing web service test cases
US7761785B2 (en) Providing resilient links
CN108369600B (zh) web浏览器扩展
US20080046457A1 (en) Configuration of Optimized Custom Properties in a Data Finder Tool
US20080052623A1 (en) Accessing data objects based on attribute data
US20130198568A1 (en) System And Method For Test Case Generation Using Action Keywords
CN108762743B (zh) 一种数据表操作代码生成方法及装置
KR20140009297A (ko) 예시에 의한 데이터 포매팅
US9298350B2 (en) Menu searching of a hierarchical menu structure
US20080222548A1 (en) In-Context Total Document Views for Manipulating Data
KR20060067816A (ko) 액셔너블 이메일 문서를 위한 장치 및 방법
CN107798001A (zh) 网页处理方法、装置及设备
CN106815010A (zh) 一种操作数据库的方法及装置
EP3196783A1 (en) Open collaboration board with multiple integrated services
CN114003843A (zh) 一种页面生成方法、装置、设备及存储介质
US20060248443A1 (en) System and method for exporting spreadsheet data
CN103678383A (zh) 一种数据处理方法及电子设备
CN104123378A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240430

Address after: Room 208-3, 2nd Floor, Building 13, No. 53 Yanqi Street, Yanqi Economic Development Zone, Huairou District, Beijing, 100000

Patentee after: Beijing Hengde Xinyi Technology Development Co.,Ltd.

Country or region after: China

Address before: 430000 Wuhan Donghu Development Zone, Wuhan, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right