基于ADO的通用数据表编辑器*

2012-11-02 00:32谭华山
关键词:编辑器数据表字段

谭华山,杨 有,余 平

(重庆师范大学计算机与信息科学学院,重庆401331)

据统计,目前国内70% ~80%以上网站都是采用Web动态网页结合后台数据库架设而成[1,2]。网站的用户,在浏览器中输入一个动态网页网址(前台网页)后,服务器执行动态网页中的程序代码,根据请求动态获取后台数据库中所需要的数据,最后生成标准格式的网页,返回给浏览器。网站的管理员,使用后台管理系统(后台数据库操作),维护后台数据库,为前台动态网页提供数据。处理过程如图1所示。常用的程序语言有 ASP、JSP、PHP 等;数据库有 ACCESS、SQL Server、MySQL 等。

图1 动态网站结构图

对于前台网页界面,一般先由美工设计网页版面,然后由网站程序员编写代码读取数据库中的内容放入网页版面中。网页版面设计不同,相应的程序设计也不同,因而就前台网页来说,无通用性可言,只有针对不同网页单独设计。

对于后台数据库操作,由于后台数据库主要由大量数据表、视图和查询等组成,所以其主要的操作为数据表的操作,而视图和查询的后台操作与数据表类似。对于数据表而言,其常用操作包括数据表结构操作和数据表记录操作等。数据表结构操作包括建立数据表、修改字段(名称、类型、宽度)、增加字段和删除字段。数据表记录操作包括浏览记录、增加记录、修改记录和删除记录。由于所有网站的后台数据库操作基本相同,因而具有通用性,且后台数据库操作对操作界面的版面格式要求不高,可以使用通用网页界面模板。

在图1所示的动态网站结构中,后台数据库往往具有大量数据表。网站的传统设计中,针对不同的数据表设计不同的操作界面,工作量大,而且都是重复类似工作。另外,当数据表发生变化时(如字段增加、删除等),需要重新修改相应的操作界面,维护极为不方便。针对动态网站结构的这一特点,多位学者提出了不同的解决方案。Takada H.[3]等人设计和实现了一个通用用户界面,用于 AWSC(Automatic Web Service Composition),其中使用了HTN本体原理。孙雷[4]采用MVC(Model-View-Controller)模式,基于Struts框架包进行开发,实现了一个动态通用编辑界面,主要用于收集用户信息,生成报表。方建良等人使用PB实现了一种通用数据编辑界面,具有保证应用程序逻辑独立性和在应用程序中实现参照完整性约束检验的特点[5]。这些编辑器面向的用户不一样,开发的目的和技术也不相同,具有特定的应用场合。Gang Tu[6]等人还提出了数据表设计的一些建议,用以改善数据表的查询性能。唐灿[7]对HTML5、Flash和Silverlight等新兴WEB界面技术进行了总结和分析,指出Web应用程序开发应该面对这些变革。针对动态网站结构的这一特点,在此提出了一个BS模式下基于ADO(ActiveX Data Objects)对象的通用数据表编辑器方案,该编辑器使用可视化操作方式,具有数据表建立操作、数据表结构操作和数据表记录操作三大功能。该方案通过传输数据表名和相关参数到通用编辑器,自动建立风格统一的、可视化的操作界面,在不需要额外编写程序代码的情况下,实现后台数据库的维护工作。相对于传统的网站后台管理系统开发,该方案自动化程序高,简化了大量重复工作,操作简单,极大的提高了网站后台管理系统的开发效率。

1 通用数据表编辑器

通用数据表编辑器的结构如图2所示,它包括3个部分:BS模式下基于ADO对象的通用数据表创建编辑器(简称创建编辑器)、BS模式下基于ADO对象的通用数据表结构编辑器(简称结构编辑器)和BS模式下基于ADO对象的通用数据表记录编辑器(简称记录编辑器)。

图2 通用数据表编辑器的总体结构

虽然不同的网站可能使用不同的数据库,但现在常用数据库均支持SQL语言,所以在此提出的通用数据表编辑器使用SQL语言完成各种数据库操作。需要注意的是不同的数据库,对于SQL的实现方法略有不同,这造成相同功能的SQL语句,其语法略有不同,在编写通用数据表编辑器程序时需要加以区分。

1.1 创建编辑器

创建编辑器主要用于在建立网站之初,建立各种基础数据表。

传统建立数据表的方法有两种方法。一是在程序中根据需要,手工编写建立数据表的SQL语句,然后执行程序建立数据表。此方法的缺点在于,编写SQL语句比较繁琐,存在大量机械重复工作,效率不高,容易出错。二是使用数据库本身提供的界面建立数据表。此方法要求用户必须掌握数据库的操作方法,且必须拥有直接操作数据库的权限。对于某些数据库,出于安全考虑,不允许普通用户直接操作数据库。另外,不同种类的数据库的操作方法各不相同,操作方法也比较繁琐。

此处提出的创建编辑器,使用网页形式,在浏览器中以可视化操作界面进行操作,操作方法简单,易学易用,界面友好,不易出错。在字段定义界面中,用户根据需要可以反复增加、删除字段,也可以修改已经存在的字段。用户可以定义字段的名称、类型及宽度。另外,字段的默认值、完整性约束等也可在此界面中定义。当字段定义完成后,创建编辑器根据字段定义的内容,自动生成建立数据表的SQL语句:Create Table…。然后创建编辑器使用ADO对象,将Create Table语句传递给数据库,生成数据表。

1.2 结构编辑器

结构编辑器主要用于编辑数据库中已经建立好的数据表的结构。传统编辑数据表结构的方法也有两种:一是根据不同的编辑目的,手工编写对应的SQL语句,然后执行程序完成数据表编辑操作;二是使用数据库本身提供的界面编辑数据表。这两种方法的缺点与创建编辑器中所述内容相似。

图3 结构编辑器流程图

此处提出的结构编辑器,同样使用网页形式,在浏览器中以可视化操作界面进行操作,其过程如图3所示。结构编辑器首先使用ADO对象获取数据表的结构信息,然后判明操作种类,再根据操作种类生成Alter Table语句,最后使用ADO对象提交语句,完成对数据表结构的修改。

1.3 记录编辑器

记录编辑器主要用于编辑数据表中的记录,包括记录的浏览(显示)、增加、修改、删除等。由于不同数据表的内容不同,传统的处理方式是对于不同的数据表设计不同的操作界面。对于一些具有特殊要求的数据表,这种传统做法是合适的。但对于大多数数据表而言,其处理方式大致相同,即主要完成数据表的浏览、增加、修改、删除等基本操作。

此处提出的记录编辑器使用通用数据表处理界面,其通用界面包括数据表浏览界面、记录增加界面、记录修改界面、记录删除界面。各界面均是首先通用ADO对象获取数据表的结构信息,根据权限参数表自动生成操作界面,然后根据用户操作要求,生成不同功能的SQL语句,通过ADO对象提交给数据库,完成各自不同的操作,其过程如图4所示。

图4 记录编辑器流程图

2 记录编辑器的实现原理

由于网站后台用户可能有多个,不同用户具有的权限一般不同,所以不同用户对同一数据表的不同记录可能具有不同的权限。并且,对于同一条记录中的不同字段,不同用户也可能具有不同的权限。在通用数据表编辑器中,可以通过设置权限参数表来完成权限处理。在此的做法是在调用通用数据表编辑器之前,根据网站的用户权限信息,生成权限参数表,然后将权限参数表作为参数3传递给通用数据表编辑器。

2.1 增加记录

当增加记录时,根据字段的类型不同,自动生成不同输入方式。如字符型字段使用文本框,逻辑型字段使用单选按钮组,备注型字段使用文本区域等。字段的类型通过ADO对象获得。在执行此项功能时,还可以通过权限参数表,指定不同字段的特殊要求。比如“日期”字段,用来指示该记录是什么时间录入的,用户在编辑记录时自动取当前计算机的时间,不需要用户输入,则在权限参数表中指定“日期”字段的操作权限为readonly。

增加记录权限参数表是一个三元二维数组:addParameter(n,1)指定字段名、addParameter(n,2)指定字段处理方式、addParameter(n,3)指定可选的默认设置值。addParameter(n,2)的取值及其含义如表1所示。对于数据表中的字段,在addParameter数组中不需要全部说明。如字段没在addParameter数组中说明,则其输入框为可修改的空白框,相当于notuse。

表1 增加记录权限参数表的取值及其含义

2.2 修改记录

当修改记录时,首先使用ADO对象取出字段类型及记录内容,然后根据不同的字段类型,自动生成不同的输入框,并将原有记录内容填入输入框中。在修改记录时,也可以通过权限参数表,指定不同字段的特殊要求。例如主键“ID”字段,在修改记录时只能查看,不允许修改。

修改记录权限参数表也是一个三元二维数组:alterParameter(n,1)指定字段名、alterParameter(n,2)指定字段处理方式、alterParameter(n,3)指定可选的默认设置值。alterParameter(n,2)的取值及其含义如表2所示。对于数据表中的字段,在alterParameter数组中也不需要全部说明。如字段没在alterParameter数组中说明,则显示该字段原有数据,当前用户可以随意修改,相当于notuse。

表2 修改记录权限参数表取值

2.3 其他操作

当浏览数据表时,使用二维表格的形式显示数据表中的记录,每条记录显示一行,每页显示多条记录,整个数据表分页显示。在执行此项功能时,可以通过权限参数表指定某些字段是否需要显示。浏览权限参数表是一个二元二维数组:showParameter(n,1)指定字段名、showParameter(n,2)指定该字段是否显示(取值为“NO”表示不显示该字段,否则显示该字段)。对于没有在权限参数表中指定的字段,均显示。当删除记录时,首先显示删除确认对话框,用户确认后,再删除数据表中的记录。

3 结论

在网站后台数据库的处理上,通用数据表编辑器实现了功能集成化、界面统一化、操作可视化,简单易用,即使用户没有高深的数据库知识和程序设计知识也可以通过编辑器对后台数据库进行处理。降低了网站开发难度,提高了网站开发速度,且使得网站后期维护更加简单、快捷。文中提出的编辑器突出通用性,其使用过程类似于函数调用,只需传入几个参数,就可以通过Web方式处理后台数据库中的大量数据表。该通用数据表编辑器在重庆师范大学计算机学院网站、重庆交旅游轮有限公司网站等十多个网站投入实际使用,效果良好,达到预期设计要求。

当然,对于有特殊处理要求的数据表,通用数据表编辑器可能不能完成其功能要求。解决方法有两种。一是采用传统方法,针对特殊处理要求单独设计处理界面;二是扩充通用数据表编辑器的功能,针对常见的特殊要求编写更多的特殊处理模块,在调用通用数据表编辑器时通过参数指定使用不同的特殊处理模块。另外,通用数据表编辑器在启动时,需要首先使用ADO对象与数据库建立连接。与数据库建立连接时,要明确知道数据库地址、数据库登录名和数据库登录密码。

[1]游向锋.SQL注入式攻击的分析与防范[J].电脑编程技巧与维护,2009(1):83-85

[2]王云,郭外萍,陈承欢.Web项目中的SQL注入问题研究与防范方法[J].计算机工程与设计.2010,31(5):976-978,1016

[3]TAKADA H,INCHEON P.Design of General User Interface for Automatic Web Service Composition[C].Proceedings of 2008 Japan-China Joint Workshop on Frontier Computer Science and Technology.27-28 Dec.,2008.Nagasahi,Japan.75-78

[4]孙雷.动态通用编辑界面在B/S模式中设计[J].电脑知识与技术,2005(9):9-11

[5]方建良.基于PB的通用数据编辑界面的研究与实现[J].计算机与现代化,2006(6):61-63,78

[6]GANG T,WEI F,LIU H Q.Inquiry of Design on Data Table[C].Proceedings of the Second International Symposium on Knowledge Acquisition and Modeling,2009(KAM2009).Nov.30-Dec.1,2009.Wuhan,China.3:33-36

[7]唐灿.下一代WEB界面前端技术综述[J].重庆工商大学学报:自然科学版,2009,26(4):350-354

猜你喜欢
编辑器数据表字段
图书馆中文图书编目外包数据质量控制分析
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
你距离微信创作达人还有多远?
基于列控工程数据表建立线路拓扑关系的研究
车辆段收发车运行图编辑器的设计与实现
基于VLIW目标机的ELF二进制编辑器设计与实现
CNMARC304字段和314字段责任附注方式解析
图表
无正题名文献著录方法评述