SQLite可视化管理方法 【技术领域】
本发明涉及数据库开发及管理技术,特别涉及一种SQLite可视化管理方法。
背景技术
作为一个日渐流行的数据库,SQLite一直没有一个真正好用的可视化开发、管理集成系统。因此,对于SQLite的操作,只能集中在控制台,或是使用SQLite Database Browser(简称Browser,其官方网站为http://sqlitebrowser.sourceforge.net/)。Browser不支持SQL语句代码提示功能,数据库开发人员只能凭自己对数据库的熟悉,或是参考相关的文档来编写SQL语句,特别是针对初学者,人们经常会忘记一个命令,或是忘记自己的数据库里有什么对象,而查询这些东西,无疑是浪费了时间,降低开发效率,非常不便,并且会因开发人员输入错误而使程序产生问题。
另外,Browser不支持数据库加密,这使得用户对于SQLite的安全性产生的怀疑,并阻碍了它的进一步发展;也不支持DTS(数据传输服务)数据导入,从其他数据库换用SQLite数据库时非常不便。
【发明内容】
本发明要解决的技术问题是提供一种SQLite可视化管理方法,采用该SQLite可视化管理方法可以进行SQL语句代码提示。
为解决上述技术问题,本发明的SQLite可视化管理方法,进入操作数据库之后,能进行代码提示,进行代码提示包括以下步骤:
一.通过SQL语句操作,用户输入SQL代码;
二.产生进行代码提示的事件后,检验当前光标所在处的词所在的一句代码;
三.判断当前光标所在处的词是否有上下文,上下文指的是一句代码中的一个词前面或后面的词;如果当前光标所在处的词没有上下文,则不进行代码提示;如果当前光标所在处的词有上下文,进行步骤四;
四.搜索上下文,判断能否找到表名,若找到表名,进入步骤七,若找不到表名,进入步骤五;
五.搜索上下文,判断能否找到表的别名,若未找到表的别名,则不进行代码提示;若找到表的别名,则进入步骤六;
六.在所有的已输入的SQL语句中搜索别名所对应的表的真实名称,若未找到表的真实名称,则不进行代码提示;若找到表的真实名称,进行步骤七;
七.加载表名所对应的表;
八.取出表内的字段名称列表;
九.将字段名称向用户提示。
本发明的SQLite可视化管理方法,启动进入操作数据库之后,可以通过可视化图形操作界面选择启动DTS导入功能,DTS导入包括以下步骤:
一.打开要导入数据的SQLite数据库;
二.选择数据源的驱动;
三.连接到数据源;
四.对数据源编写SQL语句,从数据源中选定要导入的数据;
五.将数据源中被选定的数据导入SQLite数据库中;
六.导入完毕后,关闭数据源。
数据源的驱动可以包括ADO驱动方式和ZEOS驱动方式;
本发明的SQLite可视化管理方法,可以对数据库进行加密操作,
新建SQLite数据库时,如需要设定密码,则调用SQLite的sqlite3_key函数,设定密码,然后进入操作数据库;
打开SQLite数据库时,提示输入密码,调用sqlite3_key函数判断密码是否正确,正确则打开SQLite数据库,错误则无法打开;
打开SQLite数据库后,需要更改密码时,调用sqlite3_rekey函数,确认提供的原密码正确后,更改密码。
本发明的SQLite可视化管理方法,通过SQL语句代码提示功能,使编写SQL变得方便,极大地提高了生产力,加快项目开发进度。现有的SQLite可视化管理方法,数据库开发人员只能凭自己对数据库的熟悉,或是参考相关的文档,来编写SQL语句。而采用本方法的SQLite可视化管理工具(SQLite Tool)可以自动地为开发人员提示出所需的SQL语句,节省了熟悉数据库或是参考文档的时间,并且该SQLite可视化管理方法的自动代码提示还可以保证开发人员不会因输入错误而使程序产生问题,从而降低了项目后期对SQL语句的维护成本。另外,采用本方法的SQLite可视化管理工具还能够实现DTS数据导入,使得从其他数据库换用SQLite数据库时,变得非常方便,不需要再花人力,财力去开发数据的转换程序,而是直接使用软件工具中的DTS功能。还解决了长久以来,困挠着众多开发人员的SQLite加密问题,使SQLite数据库变得安全。
【附图说明】
下面结合附图及具体实施方式对本发明作进一步详细说明。
图1是本发明的SQLite可视化管理方法进行代码提示的一实施方式示意图;
图2是SQLite数据库表的结构示意图;
图3是本发明的SQLite可视化管理方法进行DTS导入一实施方式示意图;
图4是本发明的SQLite可视化管理方法进行SQLite数据库加密一实施方式示意图。
【具体实施方式】
本发明的SQLite可视化管理方法一实施方式如图1所示,SQLite可视化管理工具软件启动,进入操作数据库之后,能进行代码提示,进行代码提示包括以下步骤:
一.通过SQL语句操作,用户输入SQL代码;
二.产生进行代码提示的事件后,检验当前光标所在处的词所在的一句代码;
三.判断当前光标所在处的词是否有上下文,上下文指的是一句代码中的一个词前面或后面的词,例如“select*from Table”这句代码,则“from”这一词的上文是“select”,下文是“table”;如果当前光标所在处的词没有上下文,则不进行代码提示;如果当前光标所在处的词有上下文,进行步骤四;
四.搜索上下文,判断能否找到表名。由于SQL语句的编写规则,表名为SQL语句中的词,因此搜索上下文即可能找到表名。同上例所述,“select*from Table”这一句代码,词“from”的下文为词“Table”,“Table”为表名。若找到表名,进入步骤七,若找不到表名,进入步骤五;
五.搜索上下文,判断能否找到表的别名。由于SQL语句的编写规则,表的别名为SQL语句中的词,因此搜索上下文即可能找到表的别名。例如“select*from t”这句代码,最后的词“t”即是别名,若未找到表的别名,则不进行代码提示;若找到表的别名,则进入步骤六;
六.在所有的已输入的SQL语句中搜索别名所对应的表的真实名称,例如若已输入的所有SQL语句中有“select*from Table t”这样一句代码,则可以搜索到别名“t”所对应的表的真实名称为“Table”;若未找到表的真实名称,则不进行代码提示;若找到表的真实名称,进行步骤七;
七.加载表名所对应的表,表的结构如图2所示,表内有字段名称列表;
八.取出表内的字段名称列表;
九.将字段名称向用户提示。
代码提示分为以下几个部分:代码关键字解析;上下文搜索;别名搜索;别名匹配;获取指定的表名;完成提示。
代码提示的功能可以最大限度的提升SQLite开发人员的工作效率,它使得开发人员不再需要去记表内的字段,也不会在多表连接时,搞错表内关系。对于初学者来说,代码提示的功能可以让一位初学者不需要记忆关键字或是数据类型,也能够快速的输入代码。
使用本发明的SQLite可视化管理方法一实施例如下:
1)产生进行代码提示的事件,本实施例中,按下Alt+F1,Alt+F2,Alt+F3,或是“.”符号能够进行代码提示,弹出相应的代码提示,因此需要先截获按键。
2)解析当前光标所在处的词所在的一句代码,并获得Token(令牌)。此处涉及编译原理,将当前光标所在处的词所在的一句代码解析成语法树,以便在后续的流程中,从语法树中获得需要的内容。此时语法树的节点上,不仅拥有一个字符串的描述,还应当拥有一个指向其直接根节点的指针。
3)获取需要提示的内容,从语法树中,按Token上下文得到语法树中所对应的点节,比如说数据表的名称,及其所对应的字段等。
4)将获取到的提示内容以列表方式显示给用户。
5)等待用户从提示列表中选择。选择列表的内容有几种方式,一种是继续输入代码,这种情况是为了更精确的过滤需要的内容。第二种是按方向键与回车键从列表中选取,第三种情况是鼠标选中要选择的内容,双击选取。这三种选择方式必须都用消息机制来支持。
6)将用户选定的内容输出到编辑器中。
很多情况下,用户需要在不同数据库间相互导入数据,这就需要DTS(Data Transmission Services,数据传输服务)导入功能,本发明的SQLite可视化管理方法一实施方式如图3所示,能实现DTS(DataTransmission Services,数据传输服务)导入功能。
SQLite可视化管理工具软件启动,进入操作数据库之后,通过可视化图形操作界面,选择启动DTS(Data Transmission Services,数据传输服务)导入功能,包括以下步骤:
一.打开要导入数据的SQLite数据库;
二.选择数据源的驱动,包括ADO和ZEOS驱动方式;
三.连接到数据源;
四.对数据源编写SQL语句,从数据源中选定要导入的数据;
五.验证所述对数据源编写的SQL语句的合法性。如果用户输入的数据是错误的,则生成的SQL语句也会有错,为了避免SQL语句错误引起数据库安全问题,因此先检验SQL语句的合法性。当所述对数据源编写的SQL语句不合法时,不执行导入操作,当所述对数据源编写的SQL语句合法时进入步骤六;
六.启动导入事务。事务用来保持数据的完整性和一致性,当导入数据发生错误时,事务可以将所有的操作一起回滚,而不会在数据库内留下脏数据,若留下脏数据,则可能对下一次的DTS导入造成不可预知的影响;
七.将数据源中被选定的数据导入SQLite数据库中;
八.导入完毕后,结束导入事务,关闭数据源。
DTS导入功能的技术核心是ADO和ZEOS。ADO(ActiveX Data Objects)是微软提供的一个较为通用的数据驱动,它可以操作一些基于OLEDB(对象链接和嵌入数据库)的数据库。而ZEOS是开源社区提供的一个综合的数据驱动(它的主页:http://sourceforge.net/projects/zeoslib),它可以访问现有的几乎所有的数据库。当ADO无法支持某种数据库时,就可以使用ZEOS驱动来进行数据的导入。它的通用性比ADO强得多,但是设置也较为麻烦,因此在采用本发明方法的SQLite可视化管理工具软件中,同时集成了这两种驱动,以便不同需求的开发人员使用不同的DTS解决方案。
本发明的SQLite可视化管理方法一实施方式如图4所示,能实现SQLite数据库的加密功能。
在SQLite官方提供的链接库中,不包含加密的功能,一般的情况下,SQLite被认为无法加密,但是SQLite公开了两个用于加密,修改密码的API(应用程序接口application program interface)函数。实现加密的两个API函数,源码公开如下:
SQLite3_Key:function(db:Pointer;Password:PAnsiChar;Length:Integer):Integer;cdecl;
SQLite3_Rekey:function(db:Pointer;Password:PAnsiChar;Length:Integer):Integer;cdecl;
@SQLite3_Key:=GetProcAddress(DLLHandle,’sqlite3_key’);
@SQLite3_Rekey:=GetProcAddress(DLLHandle,’sqlite3_rekey’);
因此,对这两个API函数进行扩充,并调用,可完成对数据库的加密。
本发明的SQLite可视化管理方法一实施方式采用了经过API修改的链接库,配合相关的API函数调用,来实现SQLite数据库的加密。
本发明的SQLite可视化管理方法进行加密的过程如下,SQLite可视化管理工具软件启动后:
1)新建SQLite数据库时,询问是否需要设定密码,如需要密码则若选“是”,调用SQLite的sqlite3_key函数,设定密码,否则选“否”则使用空密码。然后进入操作数据库。
2)打开SQLite数据库时,提示输入密码,调用sqlite3_key判断密码是否正确,若输入的密码正确则打开SQLite数据库,错误则无法打开。
3)更改密码时,调用sqlite3_rekey,需提供原密码,确认原密码正确后,才允许更改密码;
本发明的SQLite可视化管理方法,用户可以在新建一个SQLite数据库时为它设置密码或在打开一个SQLite数据库后为它修改密码;当进入SQLite操作数据库时,即可使用SQL语句的代码提示功能,例如,按下Alt+F1,Alt+F2,Alt+F3分别对应了提示关键字,函数,数据类型,另外也可以用“.”符号进行动态提示。它改变了以往的SQLite数据库开发人员必须手工输入所有代码的开发方式,能自动进行代码提示和进行DTS导入,极大的提高了开发效率,提高了生产力。