前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇sql语言范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:多语言 数据抽取 对应关系
中图分类号:TP301.6 文献标识码:A 文章编号:1674-098X(2017)02(c)-0153-02
目前,数据库在全世界范围内都得到了非常广泛的应用,但数据库的使用和显示语言并没有得到有效的统一。在日常工作中,一个国家的公司可能与另一个国家的公司合作做项目。但是两个不同语言国家的公司合作,语言的转换就成了一个需要考虑的问题。
从图1我们可以看出,该软件无论是登录界面还是数据抽出的界面都是由日语的字段组成。其中包含了如:ロット番号、得意先コ`ド等字段。因此,如果两个不同国家的人合作,若都用自己本国语言来进行一些数据操作,则对项目后期的合成带来不便;若只用一国的语言,那么对另一个国家的工作人员来说有极大的语言障碍。文章将提出基于sql 的数据语言转换方法,以便让不同母语的人在应用的时候,能够克服语言障碍。
1 相关工作
目前,实现数据库的多语言转换的方法主要是两种:(1)使用配置文件;(2)使用第三方语言控件。但是使用这类方法存在一些不足之处,使用配置文件很容易使用户的资料和设置破损;而用第三方语言控件则需输入大量数据,载入速度大大变慢,编译效率降低。
因此在面向对象程序设计的基础上,借鉴多语言切换方案,转换方案思路如图3所示。
如图2可知,该方案是将多语言数据输入数据库,缩短对可执行文件的长度,大大提高系统启动速度,并且保证数据不丢失,从而实现软件界面的多语言转换。
运用该思路,也可将所需要用的软件的语言进行切换:初始是日语,切换成功后,则接下来可用中文进行操作。若是操作完成后,如有需要,可按原方法再重新切换回来。
2 数据语言的转换
2.1 不同语言的数据间对应
对于原先保存在数据库中的数据,其语言已经固定。比如原来的数据是日语,那么抽出来的也是日语。那么现在在前台调用的人员想看到中文的数据,则需要事先对数据进行转换。
首先查找出原日语数据库中的主要数据项目名(可根据一些列名或者标题名来查找)。
再创建语言之间的对应关系表,如表1所示。根据数据中的字段制定上述关系对应列表,并给予编号1、2、3......一个编号(key)对应一组关系。在调用的时候,即可根据编号将日文对应的中文字段抽调出来。
2.2 含相同字段间不同语言切换
在一些主要字段中,可直接采用关系对应表的方式进行转换。但是考虑到一些字段会反复出现,或是许多字段有重复的部分,则可建立不同和相同字段间的映射关系,如图4所示。
如图3可知,用户要查找有关“商品コ`ド”(日文)的数据,但“商品”(日文)这个字段在其他字段中反复出现,因此可以通过该字段同时抽取其他含有该字段的项目名。
3 数据多语言的抽取
3.1 数据抽取思路
在抽取前首先要增加两个语言控件,分别为日文、中文。当用户在前台选择“中文”控件的时候,中文稻菹允境隼矗选择“日文”的时候,日文数据显示出来。
下面是数据抽取整体思路:(以“商品コ`ド”为例)
TextBox
String
商品コ`ド
商品コ`ド 3 INNER JOIN 商品中文 JBT ON
3.商品コ`ド=JBT.商品代码
3.2 数据抽取结果
利用上述思路,先从数据库中抽取日文数据,然后再从相应的中文表中抽取中文数据,抽取结果如图4所示。
由图4可得,左侧原数据是日文版的,经转换后可得右侧中的中文数据,“ロット番号、ステントI部”等字段,均已经显示为中文的“批号、支架营业部”等,这样就方便了不同语言的用户查看数据。
4 结语
文章提出了一种基于SQL Server的数据语言转换方法。该方法首先查找出原日语数据库中的主要数据项目名,根据这些项目名建立相应的对应关系表,再找出含有相同字段的项目名,建立多个对应关系表。然后,建立两个语言的控件,并通过选择相应的编号(key)来抽出相应的数据,从而显示不同语言下的数据,方便了不同语言的用户查看数据。
参考文献
[1] 杨永国.基于SQL Sever数据库技术的多语言转换[J].硅谷,2013(1):31-32.
[2] 李兴原,丁刚.基于SQL Sever数据库技术的多语言转换[J].合作经济与科技,2008(12):46-47.
[3] 王芳.SQL Server的数据转换[J].现代企业教育,2014(12):489-489.
[4] 易国洪.对象和对象-关系DBMS[J].科技广场,2007(1):85-88.
[5] 刘晓娟.关系数据库运用分析[J].黑龙江科技信息,2008(4):60-60.
[6] 黄锐.SQL Server对XML文档的数据抽取方法的分析与实现[J].桂林航天工业学院学报,2006,11(2):24-25.
关键词:SQL语言;可视化;对比教学方法
中图分类号:G642 文献标识码:B
1引言
在数据库技术飞速发展的今天,Visual FoxPro作为优秀的小型数据库管理系统,因其具有操作界面友好、功能强大、语言精炼、简单易学、便于实现应用系统的快速开发等特点,仍然受到众多用户的青睐。由于Visual FoxPro自身的特点和作为各类计算机等级考试的一个方向,在很多高等院校,都将“Visual FoxPro程序设计”作为非计算机专业综合学习数据库技术和高级程序设计语言的一门课程。
“Visual FoxPro程序设计”课程中的一个重要的内容是数据的查询,通过执行SQL语句、运行查询文件、运行视图文件三种方式都可以对数据进行查询。而其中SQL的两种使用方法:交互式查询和宿主式查询,既适合于非计算机专业人员又适合于软件开发人员学习,使SQL查询得到广泛的应用。在“Visual FoxPro程序设计”课程中,SQL语言的教学既是一个重点又是一个难点。其难点主要在于:非计算机专业的学生从开始接触到计算机操作时,主要使用的是图形界面的操作方式,对于使用命令的操作方式非常生疏,学习起来非常困难。而SQL语言主要是由命令及参数组成,掌握不好命令及参数的使用就不能正确执行查询、得到结果。特别是SQL语言中的数据查询,虽然只有一条SELECT语句,但是该语句却实现了数据库的核心操作,是用途最广泛的一条语句,具有灵活的使用方法和丰富的功能。熟练地掌握这条命令的使用不仅能在Visual FoxPro中以交互式方式和程序方式方便地进行各种数据查询,而且为进一步学习使用其他数据库管理系统的知识和操作打下一个良好的基础。
2VF中三种查询方式
从“Visual FoxPro程序设计”课程的教学实践中可以感受到,学生对可视化的操作环境和操作方法比较容易接受。而Visual FoxPro中提供了众多的设计器都是一种可视化工具,利用它们可以快捷地创建和修改应用系统中的各种组件,包括数据库、数据表、查询、表单和报表等。在Visual FoxPro,创建查询使用三种方法:查询向导、查询设计器和SQL的SELECT语句,不管是使用查询向导还是使用查询设计器创建查询,其最终都是要生成一条SQL的SELECT语句,查询向导和查询设计器在本质上是SQL的SELECT语句的可视化设计方法。在SQL语言中,数据的查询是通过下列一条语句实现的:
SELECT [ALL/DISTINCT];
[TOP [PERCENT]][.][AS ];
[,[][AS ]…];
FROM [][,[]…];
[INNER/LEFT/RIGHT/FULL JOIN [] [ON …]];
[[INTO ]/[TO FILE /TO PRINTER/TO SCREEN]];
[WHERE [AND …];
[AND/OR[AND/OR…]]];
[GROUP BY [,…]][HAVING ];
[ORDER BY [ASC/DESC][,[ASC/DESC]…]]
在这条SELECT语句中,有很多参数,使用这些参数,可以确定参加查询的数据表及其联接的条件;获取相关的字段和字段的表达式;筛选出满足条件的记录;对记录进行分组和排序等操作。而在查询设计器中是通过添加数据
表,设置字段、联接、筛选、排序依据、分组依据、杂项选项卡中的内容来实现的,其中每一个选项卡实际上都对应了SELECT语句中的一个或几个参数的功能。见表1。
3对比教学方法实例
由于在查询设计器中提供了查看SQL语句的功能,通过上述查询设计器中的选项与SELECT语句及参数的对比,加上学生对查询设计器比较容易掌握这一特点,这就为我们提供了一个可视化的SQL语言对比教学方法。本文将以一个实例(参考文献[2])来说明这种教学方法的应用。
在实例中用到两个数据表:学生登记表(学号,姓名,性别,出生日期,入校总分)、学生成绩表(学号,课程编号,成绩),要求建立一个包含有“姓名、年龄、平均分、总分”的男生成绩查询,要求查询结果中只包含平均分在75分以上的学生,并按总分降序排列,输出前3名学生成绩查询结果。这是一个比较复杂的查询,几乎涵盖了SELECT 命令的所有参数,具有比较典型的代表性,其SQL命令如下:
SELECT TOP 3 学生登记表.姓名;
YEAR(DATE())-YEAR(学生登记表.出生日期)AS年龄;
AVG(学生登记表.成绩)AS 平均分, SUM(学生登记表.成绩)AS 总分;
FROM 学生登记表, 学生成绩表 WHERE 学生登记表.学号=学生成绩表.学号 AND 学生登记表.性别=”男”;
GROUP BY 学生登记表.学号 HAVING 平均分>=75;
ORDER BY 总分 DESC
如果使用查询设计器,要通过一系列步骤来实现查询。首先要加入两个表,并确定两表的联接条件,通过表达式生成新的字段:年龄、平均分和总分;筛选出性别为男记录;以学号进行分组,提取平均分在75分以上的记录,再按总分进行降序排列,最后取出前3条记录。使用查询设计器来完成上述查询,虽然操作步骤较多,但是相对于SQL命令来说,比较直观,学生理解更容易。本文介绍的对比教学方法的要点是:在查询设计器中的每一步操作后,通过使用主窗口的查询菜单中的“查看SQL”命令或在查询设计器中使用快捷菜单中的“查看SQL”命令,可查看到系统生成的相应的SQL命令,随着查询设计器的分步操作的进行,可使学生观察到一个完整的SELECT语句的实现过程。本实例的教学过程如下:
第一步,打开查询设计器,加入学生登记表和学生成绩表,在“联接”选项卡中,确认其两表的联接条件。第二步,在“字段”选项卡中选取“姓名”字段,再通过“函数和表达式”生成器生成“年龄”、“平均分”和“总分”字段。前二步的操作结果见图1。在图1中,选取菜单“查询/查看SQL”,可见到上述操作已生成对应的SQL语句,如图2。在图2中,前3行是选取和生成的四个字段,后2行是两表的联接及联接条件。其联接条件也可写成:
FROM学生登记表,学生成绩表 WHERE 学生登记表.学号=学生成绩表.学号
第三步,在“筛选”选项卡中,生成如图3所示的筛选条件。同时在SQL语句窗口中可以看到增加了一个参数选项,见图4中第6行。第四步,在“分组依据” 选项卡中,选取分组字段,并生成如图5所示的分组后要满足的条件。这时,相应的在SQL语句窗口,又增加了一个参数选项,见图6中第7行和第8行。
第五步,在“排序依据”选项卡中,确定如图7所示的“排序条件”和“排序选项”。在SQL语句又增加了一个参数选项,见图8中第9行。其中的4表示第4个字段,
既“总分”字段,该参数也可写为:ORDER BY 总分 DESC最后,在“杂项”选项卡中,确定满足上述条件的前3条记录,如图9所示。在SQL语句窗口中,可以看见,在第一行中,又添加了一个参数TOP3。至此,一个完整的SQL语句已经生成,见图10。通过运行,可以得到正确的查询结果。
4结束语
本文实例中的查询,几乎涉及到SQL查询语句的所有参数,如果直接采用SQL语言进行教学,学生接受起来很困难,而用查询设计器这种可视化的方式进行对比教学,虽然步骤比较多,但学生接受起来相对容易。通过使用查询设计器和SQL语言进行可视化的对比教学方式,使学生既学会了查询设计器的使用,更重要的是很直观、很容易地掌握了SQL语言中各种参数的正确使用,作者经过多次的教学实践,取得了良好的教学效果。
参考文献:
[1] 杜小丹,刘容. Visual FoxPro程序设计教程[M]. 北京:高等教育出版社,2007.
[2] 刘容,杜小丹. Visual FoxPro程序设计上机实验及习题集[M]. 北京:高等教育出版社,2007.
An SQL Language Teaching Application of a Visual Comparison Method in VF Teaching
LIU Rong
(Chengdu university, Chengdu 610106, China)
关键词:报表服务;SQL2005;报表参数;RDL
中图分类号:TP391文献标志码:A文章编号:1009-3044(2008)12-20ppp-0c
The Research and Implementation of the enterprise Report System Based on SQL2005
HAN Min, YOU Feng, ZHAO Heng-yong
(College of Information Science and Technology, Beijing University of Chemical Technology, Beijing 10029, China)
Abstract:Introduced the characteristic of SQL Server 2005 reporting services. Integrate the demand of enterprise report, uses the method of modifying the RDL document and processing the data of reporting services, giving an example of using Reporting Service of SQL Server2005 to realize dynamic display Web user-defined report under the VS environment.
Key words:Report service; SQL2005; Report Parameter; RDL
1 引言
随着Internet的发展,企业级应用软件逐渐由C/S结构转向B/S结构,企业管理信息系统正逐步由传统的客户端/服务器模式向Internet转移,作为其输出展现端,越来越多的报表将在Web 环境下开发和应用[1]。在企业级的报表解决方案中,不少开发人员采用集成于Visual Studio中的Crystal Report (水晶报表)工具实现,但水晶报表作为第三方开发组件,对其应用时需要编写大量的程序且部署复杂。由于SQL Server的Reporting Services(报表服务)采用集中存储和管理报表、设置策略以确保对报表及文件夹的安全访问、控制处理和分发报表的方式,使在企业业务中使用报表的方式标准化,并且报表服务使报表的设计生成更加容易,具有和Visual Studio集成性好,易于部署,用户的个性化设置灵活的特性,本文提出利用SQL 2005中的Reporting Service 实现企业报表系统的解决方案。
2 Reporting Service简介
Reporting Services是微软在2003年作为SQL Server2000产品套件的一部分的,2005年在SQL Server2005中进行了扩展。SQL Server报表服务是一种基于服务器的新型报表平台,该平台构建在 .NET Framework 2.0 上并与 SQL Server 2005集成在一起,可用于创建和管理包含来自关系数据源和多维数据源数据的表格报表、矩阵报表、图形报表和自由格式报表,可以通过基于 Web 的连接来查看和管理创建的报表,可以使用一个扩展的基于 Web服务的 API 将丰富的报表生成功能集成到应用程序中,因此,Reporting Services 是在各种企业报表开发环境中生成报表的极佳工具。
2.1 RDL
SQL Server2005报表服务定义了一个XML标准RDL(报表定义语言),是一种公开的XML定义报表的格式,因此,可以通过直接编写和修改RDL或者创建自定义工具生成相应的报表格式,满足用户对报表的自定义的需求,达到对报表服务的灵活性扩展。在SQL Server或VS2005环境中,可以使用图形化的制作工具编辑RDL文件。
2.2 Reporting Service的报表设计工具
Reporting Service包括两个报表设计工具:报表生成器和报表设计器。在企业级报表系统的应用中可针对不同的报表需求,选择相应的报表设计工具。
报表生成器是一个在互联网上的Windows客户端应用程序,可以基于报表模型生成报表,报表生成器使用了智能客户端技术,在不必了解基础数据库、报表定义及Reporting Service存储报表的方式情况下,可以使用报表模型实时生成报表。
报表设计器是一种用于创建和报表定义的工具。通过报表设计器可以访问所有报表定义功能。报表设计器提供了图形化的设计界面,可以在其中定义数据源和查询信息,利用其提供的报表项进行报表格式的设计,添加要显示的数据源字段。在报表设计器中通过对相应的报表项设置不同数据来源参数的方式,实现用户自定义报表格式和对报表数据的动态查询。
2.3 报表管理器
在SQL Server2005报表服务中,报表管理器是包含于报表服务中的一个基于Web 的管理应用程序,它使用和Web 服务API的报表服务器的界面创建。报表管理器应用程序驻留在Web 服务器上并且为Web 浏览器访问,为报表服务器数据库中的内容提供一个管理界面,在报表管理中可以完成用户对报表访问的安全设置、站点设置、文件夹的处理、报表属性设置及报表数据源的处理等应用。可以通过报表服务自身提供的报表服务器的URL访问报表管理器页面,实现企业级报表的Web 管理,也可以通过创建一个利用相同报表服务Web 服务API的应用程序来创建企业要求的自定义的报表管理器[2]。
3 企业报表系统的方案设计及实现原理
3.1 企业报表系统的实现技术。
为了满足企业级Web 报表系统的性能需求,其技术方案如图1所示:
3.2 企业报表系统实现原理
为了实现自定义报表,本文设计了基于 和SQL Server报表服务2005的Web 自定义报表模型:建立报表格式信息数据库和报表数据信息数据库,通过访问数据库。报表数据采用 DataSet作为数据源绑定,根据SQL Server报表服务2005提供的数据处理接口在Visual Studio2005中编写代码实现数据集的动态绑定[3]。对SQL Server报表服务2005进行参数设置实现报表格式的自定义。首先,在根据企业的应用需求确定报表表格的自定义参数,即对报表服务的报表项(表、文本框、列表、图像和矩形等)建立参数表;其次,对报表的数据处理进行扩展应用,根据查询排序等设置从数据库中提取数据,动态生成DataSet数据源,在中,将 DataSet 动态绑定到报表显示控件ReportView; 最后,在中,对ReportView控件编写代码实现对SQL 2005的报表服务的访问。实现原理如图2所示。下面结合实例讲解企业自定义报表的实现。
3.3 报表格式的自定义
SQL Server报表服务2005的报表模板格式的自定义可以由以下两种方式实现。第一种是在报表服务外部,通过XML文档的修改实现报表的自定义,此方式对熟悉XML语言的用户适用。第二种方式针对不熟悉报表开发环境的一般用户,通过选择相关报表格式参数的方式实现报表模板格式的自定义。
修改XML 文档实现报表的自定义,可以在Visual Studio 环境下选择SQL Server Business Intelligence Development Studio,通过创建报表项目在报表设计器窗体以图形化界面的方式对报表模板进行定义,或者选择报表向导的方式完成对报表模板的定义。由于定义报表的RDL文件是一个XML文档,该XML文档具有报表所有属性的标记选项卡的标准定义,报表设计元素的属性值可以用一个文本编辑器修改,因此可以在报表服务器外部通过修改编写符合报表定义的XML文件或修改已有的XML文件的方式实现报表模板的自定义[4]。
修改报表格式参数实现报表格式的自定义,在定义报表时,可以对组成报表的报表项通过对ReportParameter属性的操作,即对构成报表的文本框、表格、矩形、列表、图像等进行相应得参数设置,这些参数可通过表达式设置,也可以通过查询数据库中的报表参数信息进行设置,从而实现用户选择相应的报表参数完成报表格式的自定义。
3.4 报表数据处理
在报表设计器中,通过对数据库查询设置报表数据集。区别于.NET中的数据集,报表服务中的数据集指一个查询表达式或一个用于查询数据库中对象的引用,包括在报表的定义中。可以在定义数据集的查询中设置参数,也可以在存储过程中定义参数实现数据筛选,参数项可以由一个静态列表或者一个数据驱动的查询填充,从而实现用户选择不同的参数对报表的各种查询显示[5]。根据SQL Server报表服务2005提供的数据处理接口,通过访问数据库,报表数据采用 DataSet作为数据源绑定,在Visual Studio2005中编写代码实现数据集的动态绑定。
3.5 报表的显示输出
SQL Server报表服务2005 能够集成到不同的应用程序中,且具有不同的显示报表的方法:使用URL来访问报表,使用报表服务的Web服务以编程的方式显示报表,使用ReportViewer控件显示报表和使用SharePoint显示报表。本文采用ReportViewer控件显示报表的方式实现报表的显示,该显示方式可以完成在显示页面中的浏览、打印、保存、查询、翻页等功能。由于ReportViewer是客户端控件,可以使用来自任何数据源的数据,既可在Windows窗体使用,也可在Web窗体使用,故根据企业报表显示的需求,采用在Web 窗体使用ReportViewer实现报表的显示输出。首先,将定义好的报表添加到 应用程序中,打开Choose Toolbox Items检查ReportViewer控件,将其添加到引用中。其次,在Web窗体上添加ReportViewer控件和其他输出页面进行交互的控件如标签和下拉列表框等。最后,设置ReportViewer的ReportPath和ReportServerUrl属性,并编写相应代码完成报表参数的传递,参数作为RportParameter对象数组来管理,报表参数通过传递给ServerReport对象的SetParameters方法的数组来填充。其部分代码如下所示:
private void ViewReport()
{
string sReportServerURL = "LocalHost/ReportServer";
string sReportPath ="/Professional SQL Reporting Services/enterprise report ";
Microsoft.Reporting.WinForms.ReportParameter[] Param;
Param[0] =newMicrosoft.Reporting.WinForms.ReportParameter
("OrderDateFrom", this.dtOrderDateFrom.Value.ToString());
Param[1]
=newMicrosoft.Reporting.WinForms.ReportParameter
("OrderDateTo",this.dtOrderDateTo.Value.ToString());
reportViewer1.ProcessingMode =
Microsoft.Reporting.WinForms.ProcessingMode.Remote;
reportViewer1.ServerReport.ReportServerUrl
= new Uri(sReportServerURL);
reportViewer1.ServerReport.ReportPath = sReportPath;
reportViewer1.ServerReport.SetParameters(Param);
reportViewer1.ShowParameterPrompts = false;
reportViewer1.ShowPromptAreaButton = false;
reportViewer1.RefreshReport();
}
4 结束语
本文提出的在.NET平台下利用SQL Server2005中的报表服务实现企业报表系统的方案,满足了企业对报表灵活设置参数实现对某些报表项的自定义和易于更新和维护的需求。该方案适用于在.NET 平台下生成各类企业报表。由于SQL Server报表服务和SQL数据库结合的紧密并且具有很好的扩展性,以及对企业商业智能(BI)的支持,可进一步从数据处理扩展、交付扩展、显示扩展和安全扩展等领域延伸企业报表系统的应用。
参考文献:
[1]张亚平、贺占庄,B/S架构下动态报表的一种实现方式[J],计算机技术与发展,2007,17(4):93-95,103.
[2]paul Truly 、谢文亮(译),SQL Server2005报表服务高级编程[M],北京:清华大学出版社,2007.
[3]陈传波、黄刚、刘清慧,一种基于的自定义报表的设计与实现[J],计算机工程与科学,2006,28(6):112-114.
[4]菅言彬,基于XML的Web智能报表的研究与实现[D],华北电力大学,2005.
[5]刘福军、申永军、刘杰、史维祥,存储过程和OLE技术在报表设计中的应用[J],计算机与现代化,2003,(3):73-75,7.
【关键词】在线考试 JSP SQL Server 信息管理
近年,随着考试类型的不断增加以及考试要求的不断提高,传统考试已不能完全满足人们的需求,也显露出种种弊端。网络技术以及普及到了教学领域的各个方向,借助JSP及数据库等现代技术,可以使在线考试系统的实现成为可能。因此,许多学校或监考机构都想利用网络在线考试系统来降低管理成本,增加考试效率。网络在线考试系统已经成为教育技术发展与研究的方向。
1 系统分析
1.1 系统需求分析
在线考试系统主要包括系统的注册、登陆、在线的考试系统、成绩查询系统等。注册和登陆功能是较为基本的功能,这里不多叙述。在线的考试系统,要考虑的主要是怎样出题、怎样收集答案、怎样保存,怎样判分这些问题。成绩查询系统则要有一个友善的界面,确保考生考试的顺利进行。并且提供对考生成绩的统计和查询等管理功能。应具有良好的安全性管理。
1.2 数据库需求分析
由于网络在线考试系统的关键在于要确保数据的完整和安全,为此,必须有完备和广泛的数据存储和管理系统作为实现考试系统的数据支撑。SQL Server 2005是一种高性能的数据库管理系统,在保障系统可靠性和数据的安全性方面都比较高校,且整体性能良好,被公认为是卓越的数据库平台。系统基于SQL Server数据库,结合系统需求,对要实现的各个功能部分进行分别设计,并列出了相应的的数据项:考生信息表、课程信息表、套题信息表、试题信息表和考试试题信息表等。数据结构涉及各项目的ID、名称、时间、课程、分数等其它信息。
1.3 技术可行性
技术实现方面,根据整个系统的需求和限制条件,从软件配置和硬件实现方面进行了分析。从技术的角度研究系统实现的可行性。
软件配置,网络化考试需要的各种软件环境都已具备,本系统利用当前较流行的JSP技术,并选用SQL Server 2005作为数据库服务器平台。该数据库平台能较好的完成数据的编辑、查询和提取,同时具备绝对的数据安全保障机制。因此在大数据处理、灵活操作等方面,完全可以为整个系统提供软件上的支持。
硬件方面,考虑到该在线考试系统对硬件的要求并不需要太高。只要系统硬件具备一定的运算和存储能力、具有一定的稳定性、以及支持网络功能就可以。综上所述,其硬件平全能满足此系统的需要。
2 数据库设计
SQL Server数据库应用技术在经历了多年的演变与洗礼后已有很好的发展。SQL Server 2005作为Windows平台上成熟的数据库平台,已经经过了无数的数据应用系统及项目的测试和洗礼,其安全性和卓越的数据处理能力有目共睹。
下面对系统中的核心系统的数据库进行设计,试卷信息的E-R图如图1所示。对应的部分试题信息表如表1所示。
3 系统设计
3.1 在线考试模块设计
在线考试模块的主要功能是允许的考生在网站上针对指定的课程进行考试。通常考试系统运行后先要在桌面弹出考试规则,然后经学生确认阅读完毕后,进行试题的随机抽取,从而开始考试并计时,最后到学生提交试卷后,实现系统的自动评分,并给出最终考试成绩。
用户登陆后选择在线考试,系统调用examRule.jsp,显示考试规则,用户需同意相应的考试规则,进入selectLesson.jsp选择要进行考试的科目,单击开始考试,系统会进入startExam页面,开始进行答题!
3.2 考试题目管理模块设计
考试题目管理模块主要包括考试题目列表的查看及修改编辑,以及后期对试题的添加和编辑、删除等功能。管理员选择题目管理,进入question.Jsp页面,选择对题目进行的增删改查操作,程序会调用相应的模块,对信息进行操作。
4 结论
整个该系统具有试卷管理、试题与科目信息管理,学生信息管理等功能,已经完成了前台和后台管理,实现了核心功能。本系统应用J2EE平台技术,采用了当前业界较为流行的Struts的框架结构,实现此在线网络考试系统。
参考文献
[1]虞益诚.SQLserver2005数据库应用技术[M].北京:中国铁道出版社,2009(09).
[2]李尊朝.JAVA语言程序设计[M].北京:中国铁道出版社,2011(09).
关键词:SQL注入 原理 防范
中图分类号:TP309.3 文献标识码:A 文章编号:1007-9416(2016)04-0000-00
1 SQL注入简介
程序员在编写网页代码的时候,常常缺少检验用户输入数据是否合法,这样使整个网站应用存在较高的安全隐患。对于一些非法用户,想要获得某些有用数据或者破坏数据,采用的方法如下,用户可以通过登录框提交一段数据库查询代码,然后根据网页返回的结果,来判断网站是否有数据漏洞,最后通过查询代码获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入[2]。
3 Sql注入的防范
从上面的例子可以看出,如果网页开发者不注意过滤转义字符,很有可能被SQL注入式攻击。那么该如何来防治呢?下面这些建议或许有一定的帮助[3]。
(1)对数据进行有效性检测。比如登录名文本框内只能是字母和数字,那么就要校验用户输入的数据是否合法,比如分号、等号、括号和扩折号都必须要进行程序检查。另外,还可以限制输入的数据长度,如果文本框的输入长度限制在十个字符以内,那么就大大减少了有害代码插入的几率。
(2)将数据进行封装。在编程中使用session等语句将用户提交的信息封装起来,不要用cookie,这样避免非法用户从cookie中获取重要信息。
(3)过滤掉敏感信息。不要在程序代码中出现用户名称和密码,进行查询的数据应从文本框中获取,提高网站的安全性。
(4)单引号应过滤掉[4]。就像本文举的实例一样,就是因为没有过滤掉用户的单引号,才让非法用户绕过了密码验证,实现了SQL注入攻击。所以,过滤掉用户输入的单引号,约束了他们的权限,大大避免了遭受SQL注入攻击。
(5)编程人员应指定网站错误返回页面。非法用户在提交攻击代码后,会根据页面的提示信息来获取相关服务器应用信息,比如开发者使用的数据库类型,来进行下一次的攻击,因此,编程人员应该指定一个错误页面,不包含任何有用的信息。
(6)对信息进行加密。把数据库中的重要的信息进行加密处理,比如存储口令信息的表和用户名称的表,都可以以密文形式保存,这样大大提高了数据的安全级别。
(7)对数据库中的权限进行分离。在数据库中,对用户的权限进行划分,那么,用户只能针对数据库中的授权数据进行查询、删除等操作,防止非法用户对数据库进行访问,提高了数据的安全性。
(8)使用监视工具。对数据库使用监视工具是对付SQL注入攻击的强大工具,当发生不太正常的数据访问问题时,数据库管理员会收到警告,从而会减轻大规模的SQL注入攻击的风险。
(9)使用专业的漏洞扫描工具。可以使用专业的漏洞扫描工具,专门用来查找网站中的SQL注入漏洞,降低被SQL注入攻击的几率。
4结语
sql注入在网上非常普遍,许多网站都存在这个漏洞。本文对SQL注入攻击的方法、原理以及攻击进行了研究和总结,并给出了常用的一些SQL注入攻击防范方法,尽可能降低SQL注入所带来的网络安全风险。
参考文献
[1]邹健.中文版 SQL Server2000开发与管理应用实例.2005.
[2]萧雍.SQL注入攻击常用函数与命令.黑客防线,2004.
[3]张勇,李力,薛倩.Web环境下SQL注入攻击的检测与防御.现代电子技术,2004.
[4]徐陋,姚国祥.SQL注入攻击全面预防方法及其应用.微计算机信息,2006 3(3):18-20.