sql语言范文

时间:2023-03-21 09:24:19

导语:如何才能写好一篇sql语言,这就需要搜集整理更多的资料和文献,欢迎阅读由公文云整理的十篇范文,供你借鉴。

sql语言

篇1

[关键词]成绩分析 sql语言

[中图分类号]F224.29 [文献标识码]A [文章编号]1009-5349(2014)09-0057-02

SQL(结构化查询语言)是一种数据库专用语言,无论是Oracle、MS SQL、Access还是其他大型公司的数据库,亦或是建立在大型主机或个人pc机上,都可以通过应用SQL语言来访问或是更新数据库的内容。由于SQL语言通用型强,在各个公司都具有通用性,所以易于学习和使用,也逐渐被各种数据库厂商应用,成为一种共通的标准查询语言。

目前各个高校几乎都购买了各种教务管理系统,他们是C/S或B/S模式的,教务管理系统会关系到学生的学籍、成绩、选课很多方面的内容,而且每个学校付给开发商的金额也不同,且开发商为了简化模式不会针对某个学校的情况去单独开发对单个学校的管理系统或管理软件,笔者学校购买的教务管理系统就不能实现学分遗留统计、遗留科目统计,更别提毕业资格审核的完成,只能通过SQL语言去实现这些功能,以下先简单地介绍一下SQL语句的基本功能。

一、SQL的基本语句

经常使用的SQL语句主要有以下几种:Select语句、Insert语句、Update语句和Delete语句。

(一)Select语句

1.语法格式

Select[Distinct][Top(数值)]字段列表From表名[Where条件]

Order By 排序字段名ASC|DESC][Group By 分组字段名][Having 筛选条件表达式]

2.Select语句的应用实例

①选取数据表中的全部数据:Select * From学生信息,这就是相当于将学生信息表中的数据全部提出来。

②选取数据表中指定字段的数据:Select学号From学生信息,这就相当于将学生信息从指定的表中提取出来。

③选取前若干条记录,且要求查询结果按降序排列:Select Top 10学号From成绩表,Order By成绩DESC,其中Top 10代表前十个数据的意思;Order by代表排序的意思,DESC代表降序的意思,所以整句化表现的就是取成绩在前十名的学号。

④根据特定条件选取数据表中的部分数据:Select * From学生信息,Where班级= '测控031',此处的where代表一个条件的筛选也就是代表班级为测控031的学生信息将全部提出来。

⑤按关键字查找记录:例如查询所有姓“李”的学生,“%”代表任意字符。Select * From学生信息,Where姓名Like‘李%'。

⑥查询符合某种条件的记录总数:Select Count(*)From学生信息,Where性别=‘男',此处count()为计数函数,本句的意思就是数男生的数目。

⑦计算学生的平均成绩:Select Avg(成绩)from成绩表,此处AVG函数便是求平均值的一个函数。

⑧组合查询:例如在“学生信息”表中只有“班级编号”字段,“班级名称”字段在“班级”表中,如果查询结果需要“学号、姓名、性别、班级名称”等字段,则需要从多个表中组合查询。SELECT dbo.学生信息.学号,dbo.学生信息.姓名,dbo.班级.班级名称,INNER JOIN dbo.班级 ON dbo.学生信息.班级编号=dbo.班级.班级编号。

(二)Insert语句

1.语法格式

Insert Into数据表名称(字段1,字段2, …),Values(字段值1, 字段值2, …)

2.Insert语句的应用实例

Insert Into学生信息(学号,姓名,性别,班级),Values(‘200703020128',‘唐丽',‘女',‘测控031'),本句的意思就是将新的数据信息添加到数据库中的。

(三)Update语句

1.语法格式

Update数据表名,Set字段1=字段值1,字段2=字段值2,[Where 条件]

2.Update语句的应用实例

Update学生信息,Set学号=‘200703020128',姓名=‘张文',性别=‘男',班级编号=‘2004030201',Where学号=‘200703020128',本句就是将数据库中学号为‘200703020128'的数据进行更新。

(四)Delete语句

1.语法格式

Delete From数据表名称[Where条件]。

2.Delete语句的应用实例

Delete From学生信息,Where学号=‘200703020128’,该句的意义就是删掉了学号为‘200703020128’的学生信息。

二、SQL语句的应用

本文以提取在校生挂科成绩的数据库程序为例来说明SQL语言的应用。

select BDInstitute.InstituteName as‘学院',

SMBasicInfo.StudentNo as‘学号',

SMBasicInfo.StudentName as‘姓名',

GRGrade.LessonInfoName as‘课程名称',

max(GRGrade.EffectiveGrade) as‘成绩',

以上这段程序将数据库表中的字段定义为新的字段以便可以更为直观的显示给大家。

from

BDClassInfo,

BDInstitute,

BDProfessionInfo,

以上这段程序便是在哪些表中可以找到这些数据。

where

BDClassInfo.BDClassInfoID=SMBasicInfo.BDClassInfoID

and BDClassInfo.BDProfessionInfoID=BDProfessionInfo.BDProfessionInfoID

and LCBeginLesson.TermNo=20131

and GRGrade.ExamProperty=‘正常'

and BDClassInfo.EntranceYear in (‘2012',‘2010',

‘2011',‘2013')

and GRGrade.CourseKind=‘选修'

and SMBasicInfo.StudentStatus=‘在籍在校'

以上就是where语句的各种限制条件比如说学籍状态为在籍在校、年级的筛选,等等。

group by

BDClassInfo.EntranceYear,

BDProfessionInfo.ProfessionInfoname,

SMBasicInfo.StudentNo,

SMBasicInfo.StudentName,

GRGrade.LessonInfoName

以上这段程序便是“Group By”的应用,从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”根据分组进行处理。

having max(GRGrade.EffectiveGrade)

order by

BDClassInfo.EntranceYear,

BDClassInfo.ClassInfoName,

GRGrade.ExamTermNo,

GRGrade.CourseKind,GRGrade.CreditHour desc

以上便是对全校学生不及格成绩进行提取的一个应用实例以便使大家更为清晰的理解。

三、结论

篇2

一、开发工具介绍

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL Server是一个关系数据库管理系统,它最初是由Microsoft Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2 版本,在Windows NT推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镳了,Microsoft将SQL Server移植到Windows NT系统上专注于开发推广SQL Server的Windows NT版本;Sybase则较专注于SQL Server在UNIX操作系统上的应用。SQL Server 2000是Microsoft公司推出的SQL Server数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本优点的同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98的膝上型电脑到运行Microsoft Windows 2000的大型多处理器的服务器等多种平台使用。

Delphi这个名字源于古希腊的城市名,它集中了第三代语言的优点,以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi自1995年3月一推出就受到了人们的关注,并在当年一举夺得了多项大奖。Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于其他产品生成的程序,它还是真正的面向对象的编程语言。Pascal语言的严谨加上可视化的优势和强大的数据库功能,使得它有充分的资本和微软的VB相媲美。Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言又有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序,缺省的应用程序是一个空白的窗体,您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率。

二、方案设计

本文借鉴面向对象程序设计的继承思想,提出使用SQL Server数据库载入技术实现多种语言的切换。(图1)

此方案把大量多语言数据录入到数据库中,可缩短可执行文件长度,提高系统启动速度,而且在系统崩溃后,可以使用数据库恢复功能,得到原始数据,从而实现应用软件界面多种语言的正常切换。

三、关键技术

(一)数据库载入技术。在此方案中,第一,在数据库中创建一个语言种类编码表,对当前系统支持的语种进行编码。第二,创建一个应用软件界面列表,记录当前系统的界面个数,并为每个界面设置一个编码。第三,创建一个界面与语种的映射表,记录每个界面对应的语种。在系统登陆时首先选择语言,登陆成功后,无论进入哪个窗体界面,都在窗体的Onshow事件里根据系统当前语种编码查找每个控件的Caption,更改默认为新选择语种的Caption值。此方案需要在应用程序中创建一个父类窗体,在父类窗体的Onshow事件里写入多语种界面支持程序,其他窗体可以通过继承该父类窗体实现多语种自动载入。当应用程序需要加入新的支持语种时,还需要设计一个专用的界面以提供对可视化界面窗体的语种配置。

(二)数据库表结构。在上述数据库中,用到语种编码表、窗体信息表、窗体控件语种配置表、Table字段配置表、Table字段列表、提示信息配置表等,以下是窗体信息表、窗体控件语种配置表的数据结构。(表1、2)

(三)多语种配置数据录入。可视化界面支持多语种的一个重要方面是多语种数据的录入。假如全部采用手工录入,工作量将是非常巨大的。图2所示的专用多语种配置窗体frm_config,把每个子类窗体多语种界面数据录入数据库,大大减少了录入工作量。

具体操作步骤:

第一,通过手工记录每个窗体的信息至表1中;第二,在frm_config中用listbox列出表1中记录的所有窗体,每选中一个窗体,便自动读出该窗体所有子控件,这里可以使用窗体自带方法self.Controls[index]来获取,Controls[index]数组包含了该窗体全部子控件。(图2)

但是,并非所有控件都有Caption,所以需要对每个TCon-trol使用(TControl is Tbutton)或(TControl is Tlabel)等进行判断和筛选,具体筛选什么控件,可以根据可视化应用软件在界面上使用带有Caption属性的控件而定。当把带有Caption的控件筛选出来后,可以用String-Grid组件列出,第一列是原TControl的Caption(默认简体中文),需要创建新的语种时,根据默认简体中文Cap-tion的内容,将映射值录入到对应的第二列,录入完毕保存到数据库中。通常需要多语种化的控件如:Tlabel,Tbutton,TDBGrid,TPanel,

Tcheckbox,TRadiobutton,TPopupmenu,Tmainmenu等,这些由可视化应用软件界面的控件使用情况来确定。

(四)Onshow事件的实现原理。在父类窗体的Onshow事件中写入的多语种界面支持程序可以在其子类窗体重用,其子类窗体通过继承该父类窗体便可以自动实现多语种自动载入。OnShow事件实现原理是:根据当前界面语种编码和当前窗体名称读出当前窗体内控件的多语种配置记录,根据每条记录中控件的类型和名称,更新控件的Caption为当前语种下的值。

(五)DBGrid控件的多语种化。在可视化应用软件界面中,DBGrid控件的多语种化是比较烦琐的,具体实现过程如下:

step1:使用Table字段配置表和Table字段列表记录需要多语种化的数据;

step2:定义全局过程;

step3:过程调用。通过在任何含有DBGrid窗体On-show事件内调用这一过程,便可实现DBGrid表格中的多语种化。

上述过程定义如下:

procedure GP_UpDateTitleCaptionOfDBGrid(DataSet:TDataSet;DBGrid:TwwDBGrid;

TableName:String;xLgCodeID:integer);

//DataSet:相关数据集名

//DBGrid:要更新的数据表格控件

//TableName:相关数据库表

//xLgCodeID:要更新的语种

(六)提示信息的多语种化。在可视化应用软件中有时需要给用户提示信息。对此,提示信息全部由“提示信息配置表”给出,定义一个全局动态数组,在程序启动时,从数据库中载入xMsg[x]=′MSG′的即是提示信息,调用提示信息时,只需要知道当前使用的是什么语种和信息序号。对此笔者设计了一个初始化全局变量的函数:procedureFS_LoadGlobalVar(xLgCode

ID:integer);该函数执行后将会初始全局消息队列(GS_MSG:ar-ray of String)和其他需要从数据库载入的变量初始值。当显示某个提示信息时,只需要给出他的序号。

例如:ShowMessage(GS_MSG[12]);

//第12号提示信息,各个语种的第12号信息含义一致

篇3

关键词:SQL注入 研究 预防对策

随着互联网的发展,大量的web网站开始涌现,极大地方便了人们的信息获取需求。与此同时,黑客针对网站的攻击也屡屡出现,造成了或多或少的经济损失现代社会,而近年来互联网技术的发展迅猛,以因特网为基础平台的Web应用系统在计算机的各个领域都有了越来越广泛的用途。譬如企业的办公系统以及电子商务系统等等。这些系统绝大多数都是采用的HTTP的方式进行数据的传递,然后将这些数据相关组织的数据库当中,这些数据对一些不法分子来说具有非常大的吸引力,这就给数据的安全性造成了很大的安全隐患,比较典型的就是SQL的注入。

一、SQL注入

从目前的情况来看,现在的Web应用程序在一般情况下采用的都是依靠数据库为用户进行写、度数据的方法,但是,在另一方面,由于从事程序编程人员的水平参差不齐,绝大多数编程的工作者没有在编写程序的时候对用户数据的合法性进行辨别,这就导致在应用程序的过程中出现了安全隐患。SQL注入,简单的来说,就是不法分子利用高科技手段改变原来数据的查询语句,并把这个命令提交给服务器,并在这个基础之上执行恶意的SQL命令然后不法分子在依据数据返回的结果中获取攻击者想要得到的信息,进行下一步的不法活动。

(一)关于SQL的注入原理

众所周知,SQL注入的目的就是对数据库进行攻击,然后在攻击数据库的基础之上在攻击其所在的服务器,而这种攻击的主要方式就是不法分子将代码在参数中进行植入,而这些参数会被植入SQL命令中加已执行。例如将恶意的代码插入到字符串当中,然后在这个基础之上将这些字符串保存在数据库当中的数据表中,或者将其当作元数据,当被存储的字符串植入到动态的SQL命令当中来的时候,这些恶意的代码就会被执行。虽然数据库的类型是多种多样的,但是SQL注入攻击的原理和基本过程确是基本上都一样的。结合其他学者的相关研究,本文将SQL注入的类别分为用户登录类别以及其他类两种类型。在用户登录的类别当中,不法分子可以绕过存在安全隐患的登录框进行登录,而在其他类别中,其则需要对攻击的对象进行更深一步的分析,并对数据库的类型有一定的了解,只有通过这样的途径,其才能实现SQL的注入,也只有在这个基础之上才能毒数据库进行攻击。

我们都知道,SQL的注入对数据库的危害是非常大的,攻击者不仅可以利用已经存在的SQL漏洞对服务器进行攻击,对数据库的敏感信息进行盗窃、窃取,甚至还有的不法分子会对服务器的信息进行肆意的篡改和删除,技术水平高的不法分子还有可能种植后门程序,这种行为导致的最严重的后果就是当不法分子一旦获取该服务器的最高管理权限,其就可能实现整个操作系统的控制,有的甚至导致系统无法进行日常的运行甚至会导致整个系统的瘫痪。

二、关于SQL注入攻击的防范措施

(一)参数化语句

由于数据库所执行的多数都是由SQL查询创建成的字符串,因此该构造方式极易导致应用系统受到SQL注入攻击。一般情况下,在编程语言和数据库访问API时,可采用占位符或绑定变量的方法为SQL查询提供必要参数,以此替代对用户输入进行操作。这种称为参数化查询的方法更加安全可靠,它能够尽可能地避免应用中常见的SQL注入漏洞,并可在多数情况下代替现有的动态查询,对一般数据库来说其效率更高。参数化查询语句能够为数据库提供预处理语句功能,从而优化查询并进一步提高后续查询性能

(二)输入验证

输入验证是一种功能强大的SQL注入控制手段。所谓输入验证,就是通过对应用程序的输入数据进行验证,从而保证其符合应用程序中已定义标准的过程。此方法既可以将参数限制成固定的某种类型,也可以通过使用正则表达式或业务逻辑进行输入验证。

(三)编码输出

篇4

关键词: Web安全; SQL注入; 漏洞检测; 攻击防御

中图分类号: TP391

文献标志码:A

文章编号: 2095-2163(2016)06-0087-03

0引言

最近十年来,互联网产业和技术发展蓬勃迅速,社会的各个领域都已经与Web应用建立了密切联系。使用互联网已经成为现代生活方式的不二选择。在全世界,大致可知应有数以亿计的网络服务器都在提供互联网服务。但与此同时,这些网络服务器也无时无刻都会遭遇到各类恶意攻击。

数据库是Web应用系统的基础组成部分,存储着大量关键敏感信息,因此,侵入和攻击数据库,窃取数据信息是网络攻击的主要目的和施手段。根据相关组织调研数据显示,Web应用十大关键风险排名第一位就是注入攻击。在全世界发生的Web服务系统攻击实践中,大约有60%的行为均可标注为SQL注入攻击。因此,研究SQL注入攻击及检测防御技术对有效控制和降低网络攻击事件发生必将具有重大现实意义及作用。

[BT4]1SQL注入攻击研究

[BT5]1.1SQL注入攻击原理

SQL注入攻击(SQL injection)是利用Web 应用程序的设计漏洞来实现Web应用系统、尤其是数据库的入侵,从而最终达到获取或破坏数据的一种非法策略及手段。通过SQL注入可能会导致如下后果:入侵者恶意进占了数据库服务器、获取数据库高级操作权限、窃取数据库中存储的关键数据信息等。

SQL注入攻击的发起者多是利用Web页面中存在的漏洞,有针对性地构造SQL语句,并蓄意引导数据库服务器执行这些SQL语句,通过截取用户名和密码等重要信息,从而全面获取了数据库控制权限。

SQL注入攻击的可选研究方式主要有:

1)使用注释符和恒等式;

2)使用union语句进行联合查询;

3)使用insert或update语句对数据库数据表内数据进行增加或修改;

4)利用一些内置函数辅助进行攻击等。

在此,将结合前2种方法给出实现过程详述与阐析。

1.1.1使用注释符和恒等式

众所周知,如果要查询数据库的user表中所有条目,那么正确的查询语句为:

SELECT * FROM user WHERE username = 'user' AND password = 'pawd'

利用ASP 实现时,需要连接字符串,而后再加上SQL 命令,最后执行查看返回的结果是否为空。那么SQL 语句嵌套在ASP 代码中的表现形式可描述如下:

var sql = "SELECT * FROM user WHERE username = '" +loginname + "' AND密码 = '" +loginpwd + "'";(loginname字段与loginpwd字段分别存储了用户在网页上所填入的用户名和密码信息。)

但是当用户在Web页面文本框内输入的内容为:loginname=‘ or 1=1 -- ,而loginpwd 的内容任意输入时,此时在ASP 中的查询语句则演变成:

SELECT * FROM user WHERE username=‘’or 1=1 --AND password = 'pawd '

显然,SQL语句中密码验证部分被“- -”注释符当成了注释语句,同时,由于“1=1”恒等式的存在导致用户名验证部分永远为真。用户名验证和密码验证均发生了失效,这样攻击者就可以登录进入Web应用系统了。

1.1.2使用union语句进行联合查询

利用union关键字查询一些数据库用户信息、数据库版本等信息。还可以用union关键字来获取其他信息。通过页面错误信息提示得到当前数据库名称、用户名等关键信息。而且,还可通过多次的报错测试,逐步获得多种关键数据信息,从而掌握数据库内部结构、数据库用户名等信息,为侵入数据提供实现基础。

[BT5]1.2SQL注入攻击流程

SQL注入攻击的基础流程可概述为:首先,检测Web登录页面中是否有SQL注入漏洞,从而构建SQL注入点;其次,利用已经构建的SQL注入点将本该基于页面获取的验证参数通过SQL语句的语法组合传递给数据库;然后,经过多次试探,陆续可得到数据库类型、数据库结构、数据表信息以及数据库账号等;最后,则根据已知信息构造并执行SQL语句,达到侵入数据库,获取数据或实施数据更改等目的。研究设计步骤可展示如下:

[HT5”H][ST5”HZ]步骤1[HT5”SS][ST5”BZ]判断SQL注入点。通常使用的SQL注入点判断方法可分述为如下2种:

1)把“’”添加到Web提交请求的尾部,再根据Web页面反馈的提示信息来判断该系统所使用的数据库类型是否存在SQL注入漏洞。

但是,程序设计者可以进一步通过加入判别规则而将单引号进行过滤,那么将使单引号测试最终失效,从而无法判断是否存在SQL注入点。

2)将“and 1=1”或“and 1=2”添加到提交请求的末尾,若添加“and 1=1”的提交请求可以正常返回显示信息、而添加“and 1=2”的提交请求却返回出错提示,此时则说明该Web页面存在注入漏洞;如果上述2个判别式均可返回提示信息,如此该Web页面即是安全的,也就是不存在SQL注入漏洞。

[HT5”H][ST5”HZ]步骤2[HT5”SS][ST5”BZ]猜测表名和字段名。如果访问的Web页面存在注入漏洞,则可以在提交请求语句后加入“and exists (select count(*)from student”,如果页面执行正常,没有错误提示,则说明student表是存在的,否则student表不存在,可以更换名称继续测试,直到猜出表名为止。

如果将Count(*)替换为Count(字段名),则用同样的方法即可进行字段名的探测。

[HT5”H][ST5”HZ]步骤3[HT5”SS][ST5”BZ]进行注入攻击。当已经基本了解数据库的内部结构后,黑客即可侵入后台数据库了。那么,这些黑客所需要的并不是DBA(数据库管理员)账号,而是DBA权限。当掌控了DBA权限后,据此将可获得更高级别的权限,这样便可以在Web系统中留下后门、植入木马等。如果使用sa 连接数据库,则能够调用xp_cmdshell 等存储过程,此时就可以对应用系统、数据库乃至操作系统进行修改和控制了。

[BT4]2SQL注入攻艏觳饧际

根据检测发生的时间和目的差异,SQL注入攻击检测可以分成为入侵前检测和入侵后检测。具体来说,利用漏洞扫描工具和构造SQL注入语句检测即是入侵前检测的主要手段,而入侵后检测的方法则是检查服务器日志文件。通常情况下,入侵者在发动SQL注入攻击后,Web服务器和数据库服务器的日志文件都会存有相应的登录和操作记录。基于此,研究探讨可知,通过使用如下方法即能改善与增进SQL注入漏洞检测,分析阐释如下。

1)利用漏洞扫描工具。常用的漏洞扫描工具有:HDSI、NBSI、Domain、Sqlmap、BSQL Hacker、The Mole、Pangolin(穿山甲)。需要指出的是,这些工具既是网站维护者可以善加利用的一些检测工具,同时却也是网络攻击者用来攻击Web服务器的首选工具。

2)通过SQL注入点,执行非法SQL语句。将SQL语句的永真式或永假式追加在Web页面请求后,根据页面执行后得到反馈信息来判断是否存在SQL注入点。对已发现的SQL注入点,通过构造and exits(select……)语句进行数据库结构判断。

3)日志文件检查。一般情况下,Web应用系统遭到入侵后都会留下相关操作记录在日志文件中。通过读取并分析数据库和Web服务器的日志文件来判断系统是否发生了入侵则是一种行之有效的方法。只是,对于经验老到的黑客来说,在实施入侵后则会进行残留痕迹的清理。

4)对访问请求进行检测。正常的访问请求不应该包含SQL关键字。基于这一前提,如果在HTTP请求中含有SQL关键词、特殊字符或者SQL语义的句子,即可初步判定为一次攻击行为。

[JP3]使用频度通常较高的SQL关键字有:select…from、 order by、union、drop table、exp、md5()、case when then、sleep、substring、user()、password()、version()、 substr()、benchmark()、schema()、--等都可以裁断为SQL注入攻击行为。 [JP]

[BT4]3SQL注入攻击防御技术

要做到防御SQL注入攻击,必须从多个层面设计应对策略:第一,从数据库设计和数据库管理方面;第二,从Web系统开发设计方面;第三,从Web系统管理维护方面。现给出综合论述如下。

[BT5]3.1数据库管理防御措施

使用安全的数据库账号,严格管控数据库账号权限,谨慎分配sa权限,用于程序连接数据库的用户使用数据库用户角色组的成员,同时严禁使用服务器角色组成员。

在数据库服务器上删除多余的扩展存储过程,尤其是访问注册表的存储过程。

DBA要将数据库服务器上的示例脚本最大限度移除,有效减少冗余脚本数据量。

数据库应设置高强度密码,提升密码安全性。

[BT5]3.2Web系统设计防御技术

探寻目前安全问题的现象机理可知,Web系统开发人员应建立全局性的安全意识,在设计过程中充分考虑可能出现的安全漏洞,编写安全代码,防患于未然。

在此基础上,Web程序设计者则应保证后台研发程序能够具备对用户提交的访问请求参数、pose数据、查询关键字进行严格检测和限制的功能;异常错误界面可以跳转指定界面,在设计上保证不会将错误信息暴露给Web系统使用者;而当涉及到数据库访问时,应采用加密传输,保证绝不使用明文传递参数;另外,针对SQL注入攻击常用方式,应尝试设立SQL语句的关联构建规则。

[BT5]3.3系统管理维护防御措施

系统管理员应及时更新可为Web系统运行提供基础支持的关键软件,确保攻击者无法通过操作系统漏洞进行入侵。此外,应关闭相关对外连接端口,如TCP 1433/UDP 1434。系统管理员还应定期检查系统中用户密码,提升密码强度,建立密码定期更换的长效机制。同时,Web系统管员也要定期对Web系统日志引入安全审核,检查是否存在异常访问记录,确保能够及时发现系统安全隐患。

[BT4]4结束语

作者在本文中介绍了SQL注入攻击的原理和方法、如何检测SQL注入漏洞、怎样防御SQL注入攻击方面的内容。通过本文,读者对SQL注入建立了一个全面清晰的认识,对如何检测和防御SQL注入攻击也获得了基本了解,并掌握了一定的基础方法及有效防范手段。

当前的时代是一个互联网时代。网络安全问题既是互联网安全问题,也是社会安全问题。作为网络中最为常见的攻击手段,SQL注入攻击给互联网造成了巨大的破坏,也带来了难以估量的经济损失。因而研究实现有效防御SQL注入攻击,对于提升Web网络系统的安全性无论从经济、社会、伦理方面都将具有重要意义。

参考文献:

杨章琼,陈效军,王涛. SQL注入攻击浅析[J]. 计算机光盘软件与应用, 2012(16):103-104.

[2] 杨丰嘉. 浅谈网站SQL注入攻击防护[J]. 计算机光盘软件与应用, 2013(13):144.

[3] 刘秀梅,辛阳,徐勤. SQL注入攻击及防御方法研究[EB/OL]. [2016-09-21].http:///releasepaper/content/201609-190.

[4] 庞博,高杰. 基于的SQL注入攻击与防范[J]. 轻工科技,2009,25(9):86-87.

[5] 齐林,王静云,蔡凌云,等. SQL注入攻击检测与防御研究[J]. 河北科技大学学报, 2012,33(6):530-533.

[6] 郑斌. 黑客攻防入门与进阶[M]. 北京:清华大学出版社,2010.[ZK)]

[FL)]

[CDF61]

[HT5”SS][ST5”BZ][WT5”BZ](上接第86页)

[FL(2K2]

[HT5”SS]

FETCH ABSOLUTE 3 FROM cur_xg--返回第3行并⑵浔湮当前行

UPDATE xsxx SET rxnf=2012--更新当前行的列值

WHERE CURRENT OF cur_xg--当前游标指针所指的当前行数据

CLOSE cur_xg

DEALLOCATE cur_xg

这里需要注意的是,游标的第二种应用是一种不规范的更新数据的途径,很容易造成数据的不一致,因此通常状况下并不选用游标来设计更新数据表中的数据。

另外,还需提及的就是,本文实例所用的数据表均基于xxsf(学校收费数据库)中的2个表,分别是:

xsxx(rxnf,xh,xm,xb,ksh,sfz,zydm,zsid)

zysf(zydm,zymc,lsyx,pycc,xxnx,xfbz,jcfbz)

[BT4]5结束语

SQL Server中的游标在原理上具有C语言指针一样的语言结构,相应地则设计提供了一种在服务器内部处理结果集的方法。使用游标可以通过遍历操作逐一地从结果集中实现数据读取,也可以对结果集中某些数据重点加设更新或删除的操作。本文以学校收费数据库为背景并结合具体的实例来阐述游标的使用,游标可以面向结果集中的每一行进行相同或不同的操作,这不仅提升了SQL语句处理复杂查询的能力,而且还降低了系统开销和潜在的阻隔情况,在一定程度上解决了许多应用程序不能把整个结果集作为一个单元来处理的问题。

[HS1*2][HT5H]参考文献:[HT]

[WTBZ][ST6BZ][HT6SS][1] [ZK(#〗

[HJ*2]

赵慧玲,毛应爽,孟宪颖. 基于SQL游标的研究与应用[J]. 科技创新导报,2012(28):31-32.

[2] 刘志成,宁云智,刘钊,编著. SQL Server实例教程[M]. 北京:电子工业出版社,2013.

[3] 薛丽香,汪东芳. 浅谈SQL Server数据库中游标的使用[J]. 福建电脑,2016(6):157-158.

[4] 陈芳勤. SQL Server 2000中游标的应用[J]. 中国科技信息,2008(13):96,99.

篇5

摘 要:这套固定资产管理系统管理范畴相对全面,覆盖了固定资产所属部门和类别、固定资产的各项属性、折旧计算以及维修纪录等一系列相关项目。详细介绍了SQL数据库的设计过程,从系统功能的实现出发,对系统进行了功能模块分类。最后用图表的形式把数据库表达出来。

关键词:数据库;实体;SQL;

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2007)01―10024-02

1 引言

在成本估算中,固定资产扮演着一个重要的角色,好的成本估算都会考虑固定资产对总成本的各种影响。尤其是初期投入和分期投入大的企业,固定资产的影响对企业的生存更是举足轻重。这套固定资产管理系统负责对企业和家庭的固定资产做一个全方位的资金描述。

数据是计算机化的信息,是计算机可以直接处理的最重要的对象[1]。数据库是存放数据的最佳场所,数据库是指按特定目的收集的、长期存储在计算机内的有组织的可共享的数据集合。收集到大量数据后.需要一个软件系统:数据库管理系统DBMS(Database Management System),对其进行科学的组织与存储[2]。固定资产管理系统用以监控固定资产的整个生命期。建立各个对象的ER(实体关系)模型,将该模型转换成关系数据库[3]。关系数据库具有严格的实体关系,便于扩充业务,同时便于与管理系统集成[4]。后台数据库采用SQL Server 2000,它是当前基于C/S开发模式的主数据库产品之一,具有性能稳定,便于操作维护和具有安全可靠性等特点[5]。从获得固定资产开始(可以是购置或者赠送等多种途径),经历固定资产使用、维修保养的全过程,直至固定资产报废。

2 系统实现的功能

要对固定资产进行有效的管理,就需要管理固定资产的每一个方面。固定资产管理的要求基本上可以归纳为以下几个方面:

已有固定资产的浏览:固定资产的添加、删除、修改功能:要求对每个固定资产的维修、保养进行详细记录,固定资产的折旧计算功能;固定资产的变更功能;固定资产的审核功能;固定资产的统计功能;相关部门、类别管理功能;用户登陆权限鉴别功能;密码修改功能;新用户添加功能。

3 总体设计

3.1 数据流分析

分析固定资产生命周期中涉及的所有处理过程.可以得到期间的数据流动情况。

获得一项新的固定资产,将其信息添加进本系统;审核,满足条件则通过审核,可以参与统计和折旧;某项固定资产出现破损或者保养期限到,送指定单位维修或保养,将相关信息添加至本管理系统;某项固定资产发生使用权交移,记录变更信息:

有财会需要,对部分固定资产进行折旧计算.并导出折旧相关数据:有统计需要,对部分固定资产进行统计,并导出统计数据;新建部门,为该部分购人固定资产。

固定资产管理数据流图如图1所示。

数据流图的相关说明:

新固定资产经过添加后可直接进入数据库保存起来,但属于未审核资产,其相关信息处理可以流向审核步骤外,不可再流向其它处理步骤。当然,在添加新资产的同时对于满足审核条件的固定资产,可直接参与审核步骤,然后再保存进数据库中:

当已审核的固定资产需要发生变更时,可经过变更操作,成为未审核资产,可以不再做任何处理而存人数据库,也可以经过审核后再存人数据库:

当某项固定资产折旧期限到期后,从数据库中提出来,进行折旧计算,把折旧后的折旧额、原值和残值等计算结果保存回数据库。

3.2 系统功能设计

根据需求分析得出的结果,并综合上文流程分析,可以总结出系统应该具备的功能:

(1)用户登陆功能

通过用户名和密码对用户进行验证.合法用户给予通过.不合法用户则拒绝其进入系统。

(2)固定资产管理功能

对已有固定资产进行修改、删除和审核,也可以添加新的固定资产进来。

(3)固定资产的查询功能

按全部、部门和资产类型分别进行查询浏览。

(4)部门信息设置功能

可以对已有部门进行更名和删除,也可以添加新的部门。

(5)固定资产类别设置功能

可以对已有类别进行更名和删除,也可以添加新的类别。

(6)维修管理功能

可以按全部、已经送修和维修完毕来查询相关固定资产的维修状况。还要能够添加需要维修的固定资产进入维修管理。

(7)折旧功能

所有审核过的固定资产都可以参与折旧计算。所以有必要把未折旧资产和已折旧资产分开显示。对于未折旧资产使用某种折旧算法进行计算。

(8)分类统计输出功能

实现按部门资产统计和按资产类型统计,并且两种统计结果都能够导出至打印设备。

(9)修改密码功能

对当前用户可以在提交正确旧密码之后输入新的密码.并在下一次登陆系统时生效。

(10)退出系统功能

3.3 子模块功能设计

以上系统功能设计所产生的一系列功能相互之间是离散的.并没有逻辑联系性。在展开进一步设计之前需要对整个系统按照各功能之间隐含的逻辑关系进行划分子模块。有三个子模块:

(1)系统信息设置模块:

其中包括一些跟固定资产信息没有直接联系的功能,例如部门信息设置功能、同定资产类别设置功能、系统用户管理功能、密码修改功能和退出系统功能。

(2)固定资产管理模块:

这是整个系统的主要模块,凡是跟固定资产密切相关的功能都被集成进来了。包括同定资产查询浏览功能、固定资产维修管理功能、同定资产变更功能、固定资产审核功能等等。

(3)固定资产统计模块:

部门资产统计和资产类别统计。

3.4 系统功能结构图

同定资产管理系统结构图如图2所示。

关于系统结构图的一点说明:

这个结构图能够直观地说明系统的功能模块划分情况,并明确指出了各模块与数据库之间的联系,除了统计模块只向外输出数据外,其它两个功能模块和数据库之间均存在数据的双向流动。而且本网还说明了各子模块相互之间并没有横向的联系和数据交换存在,这样设计有利于减少模块之间的耦合度。

3.5 数据库设计

3.5.1 数据库各实体及属性

以下是各实体及其属性:

(1)同定资产表(编号、资产编号、资产名称、资产类型编号、生产厂商、资产型号、使用日期、使用部门编号、使用年限、负责人员、原值、残值率、状态、增加方式、提交日期、有否折旧、有否审核)

(2)资产修理表(编号、资产编号、修理日期、维修单位、维修原因、当前状态、维修费用、维修结果、提交日期)

(3)部门表(部门编号、部门名称)

(4)资产类型表(类型编号、类型名称)

(5)用户表(用户名、密码、用户类型)

3.5.2 E-R图

E-R图符号如图3所示。

3.5.3数据字典及数据库

可以根据得到的实体,建立数据字典。数据字典是必要的.有了数据字典,就能建立数据库。

(1)固定资产信息表Asserts

篇6

关键词:维修;数据;信息;网络化;维修管理系统;SQL Server 2000

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 24-0000-01

Maintenance Information Management System R&D Analysis Based on ASP+SQL

Huang Hui

(East China University of Science and Technology,Shanghai200237,China)

Abstract:Starting from the actual requirements of a maintenance information management,detailed system investigation,the use of ASP,SQL Server2000 software building ASP-based information management system.The system adopts B/S mode,use the advanced technology of the SQL database access Web database application system,an online maintenance system of information retrieval,entry,modification,statistics,tables and permission settings,user help,record maintenance and other functions.

Keywords:Maintenance;Data;Information;Network;Maintenance management system;SQL Server 2000

一、引言

近年来,随着我国信息技术的飞速发展,计算机应用已逐渐渗透到各个领域。通过使用计算机可以减少大量的人工操作,提高工作效率。很多企业都在开发自己的管理系统,以便对本单位的基本信息和各项工作进行计算机管理。而利用计算机来管理信息和处理信息,就需要利用数据库管理系统软件来开发各个行业的实用软件,在企业管理领域内,计算机的应用已经相当广泛,各种管理机制与企业运作流程都与计算机紧密结合在一起,计算机的应用进一步完善了企业的管理,提高了企业的现代化管理形象,因此在此基础上开发了企业维修管理系统这个软件。

二、Windows下的ASP开发平台

Microsoft Windows软件的出现,为PC用户提供了一个直观的、图形丰富的工作环境。图形用户界面使应用程序更易于学习和使用,用户只要简单地用鼠标按钮点按“菜单”中的命令就可以执行指定的操作,而不必键入复杂的命令。屏幕上的多窗口可以使用户同时运行多个程序,并可以通过对话框输入所需要的信息或让用户选择。

ASP技术ASP(Active Server Pages动态网页)是微软公司推出的一种用以取代CGI(Common Gateway Interface通用网关接口)的技术。目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI。简单地讲,ASP是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式动态网页,包括使用HTML表单收集和处理信息,上传与下载等等。

三、用户需求分析

要开发一个网络化的信息管理系统,首先需要进行需求分析和总体设计,分析系统的使用对象和用户需求,设计系统的体系结构和数据库结构,决定使用的开发工具和后台数据库,规划项目开发速度。在实际的项目开发过程中,这些工作是非常重要的。

开发此维修信息管理系统软件,以供企业相关人员如进行维修信息管理,维修管理系统的用户是企业管理人员、企业负责人、维修人员、录入员、相关单位的统计人员等等,方便各人员随时修改、删除、查询各种信息。具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。

四、系统体系结构设计

在维修管理系统中,用户管理模块的功能比较简单。在系统初始化时,有三种默认的用户。系统超级管理员用户名为Super,一般管理员用户名位Admin,普通用户为Users,由程序设计人员手动的添加到数据库中,超级用户可以创建用户、修改用户信息以及删除用户;一般管理员只能操作部分相关信息,而普通用户则只能查看有关信息。

五、系统总体设计

(一)系统总体功能设计。系统主要由基本信息维护、服务信息维修信息录入、车况登记、数据库管理、权限管理、登录界面等系统管理等几大模块组成。通过该信息平台,各类人员可以通过网络进行数据读取、录入、查询、修改、删除、打印等各类管理事务工作,管理层可以及时了解各项事务,根据相应的工作计划,定期上传的各类工作数据,填写各类维修数据,统计各种相关报表,查看数据、报表文件、人员工作业绩、进行各地区间的业绩评比和交流信息等。

(二)系统功能模块设计。系统的操作界面分为三类:用户操作界面、一般管理员界面、超级管理员界面。同时超级管理员可以将一般管理员的权限进行相应调整,做到分工明确、操作方便、管理有效的特点。用户界面只允许用户进行查询操作,了解一些工作动态,加大了部门之间、职工之间的联系,提高了工作的透明度,有利于提高工作效率。

六、运用ASP技术操作数据

(一)建立连接。利用SqlConnection对象的ConnectionString属性可指定连接参数。

(二)数据信息录入。利用原有系统的部分有用数据进行数据库间转换,节约人力和重复录入数据的人员浪费,节约了有效的资金使用,完成了从老系统到新系统的平稳过渡。

(三)更新、删除、插入操作。系统数据的更新和维护是通过管理员登录相应的管理页面,通过网页界面将新数据或修改后的保存至数据库中实现的。利用SqlCommand对象设置相应的SQL命令来完成相应的操作。例:执行查询SQL的语句,返回一个数据表:

七、系统安全的策略

为了保证系统的安全,本系统采用MD5加密认证,以及用户提供的与应用程序有关的数据。提供良好的用户编程接口以便于快速开发安全的有效登录解决方案。

八、结束语

基于ASP的维修信息管理系统于2010年11月设计完成,之后为3个月的试用期。在试用期间,系统运行稳定、安全性好,使相关使用人员能够从繁琐的数据管理与纸介翻阅中解放出来,提高了效率。同时也为公司管理层查阅个人维修资料和了解各种维修服务信息提供了方便,可以更好、更快进行数据上报、资料检查和汇总材料上缴。该系统基本符合用户需求并具有良好的可扩展性和模块性,可以方便地组合各个模块,也可以增加更多的功能模块,以满足各类信息管理的特定需求。

参考文献:

[1]张巨俭,甘仞初.管理信息系统的发展方向及实现技术[J].计算机应用研究,2003,1

篇7

一、《数据库应用技术-SQL Server》教学存在的问题

教材偏重理论知识。《数据库应用技术-SQL Server》是一门注重实践、注重操作的课程,从当前的教材内容来看,教材中的理论知识部分非常多,而实践部分的介绍比较少,内容过于肤浅,导致教师在组织教学内容时难以找到更多的实践知识和内容。关于SQL Server数据库应用技术需要扎实的数据库理论做支撑,然而理论知识过多实践内容较少会使得学生难以理解和接受。

实验项目内容单调。根据历年来我校毕业论文的完成情况来看,用到SQL Server来做的数据库基本相同,仅是添加几张表格,却不会应用 SQL Server中的存储过程、触发器等资源。根据我校实验项目的内容来看,其实原内容基本来自教材,项目操作流于形式,但实际的实验教学实践中,学生很少参加实验练习,学不到真正的操作知识和操作本领,导致了毕业设计作品过于雷同、单调,绝大多数的毕业设计缺少实际的内容。

教学手段单调,缺乏良性互动。当前我校教师均借助多媒体开展教学,这也成为了一种习惯,使得教师们完全依赖多媒体课件,采用这样的教学手段使得学生们在学习知识的时候显得非常被动,随着多媒体课件的迅速翻篇,学生很少有思考的时间,也难以和教师就某些知识点进行互动,学生也很难完整记录课件中的代码,导致学生动手能力差,在真正自己做项目时缺乏相应的能力。

课程考核效率低。《数据库应用技术-SQL Server》课程考核采取平时+实验+期末的成绩考核方式,考核方式表面上合理,然而在实际的操作环节,实验成绩部分是根据平时成绩来定,使得考核非常模糊,根据期末考试的内容来看,考试内容分为客观题和主观题,主观题中有问答、程序填空和分析程序部分,没有写代码的题目,这样的考试内容并不能检验出学生一是否,会自己独立写代码。

二、《数据库应用技术-SQL Server》课堂教学改革与实践对策

1.合理安排教材和教学内容

在有条件的情况下可以重新编排《数据库应用技术-SQL Server》课程教材,结合数据库原理与应用技术,改编教材中偏重理论知识的情况,加强数据库实用技术部分的内容。由于SQL Server 数据库理论知识部分是SQL Server 数据库实用技术的基础,在教材内容设置方面,需要灵活安排教材内容,对各知识点和各章节的顺序进行适当调整,例如在理论知识讲解完以后适当加入技术应用部分的练习,又或者在后期的SQL Server 数据库技术之前回顾相应的数据库原理知识,通过这样的教学内容的安排促进学生对知识理论的学以致用。

若不能重新改编教材,教师则需要根据这样的思路灵活布置教学内容,例如在数据库设计的教学内容中,就是应该先导入关系数据库规范化理论部分的知识,然后再进行关系模式设计的学习,并让学生根据相应的范式要求完成关系模式设计,让学生温故知新、理论应用到实际、学以致用。SQL 语言在实际应用中有很大的区别,这要根据不同的数据库管理系统选择Transact-SQL 语言,由此,教学内容应加强Transact-SQL 语言的讲解,并加深学生对SQL Server 数据库的环境配置与应用技术的学习和掌握。

由于本课程的目的在于培养学生的 SQL Server 数据库设计和开发能力,若只是根据传统的教学内容实施教学,必定会导致学生对技术知识方面的欠缺,使得前台开发语言连接到数据库这部分技术知识不能衔接,最终不利于学生在软件开发能力方面的培养。由此,必须要通过整合程序设计类课程的教学内容,加强常用软件开发工具所对于的SQL Server 数据库技术。例如在案例教学中,需要对JAVA 程序、网站建设、.net 开发技术等设计编程部分加强相应的技术讲解,同时加强综合设计性实验的相关训练,在数据库应用系统的设计与实现中提升实操能力。

2.创新教学方法

由于采用多媒体的教学手段的单一使得学生不能学到连贯的知识和技术,并且没有考虑到学生的主体地位,缺乏课堂互动与反馈,导致低效的教学效率。由此,以教师为主导的课堂教学要充分发挥教师的教学创新,采取项目教学法加强SQL Server各个知识点的讲解应用,最大限度地调动学生学习的积极性与主动性,让学生独立解决问题。

项目教学法。在整个教学过程中,用实际项目贯穿课程,让学生学会项目需求分析,以此完成后期的概念、逻辑、物理等结构的设计,从而开展数据库的实施、运行和维护,加强学生对项目运作过程的熟练程度,提升学生对相关操作的掌握。

任务驱动法。目前在很多课程中都采用任务驱动法促进学生的自主学习。在本课程中,教师围绕一个具体的数据库系统布置的相应的具体任务,让学生做好课前预习和思考,在上课时教师进行启发式提问,并在课后又再一次布置任务让学生加强练习和预习。在课堂前、课堂中以及课堂后的每一个任务都有一定的衔接性和关联,而学生也在任务驱动下的带着目的去相互协作和互动,提升其对学习的兴趣、主动性和成就感。

互动教学法。该教学法贯穿在本课程的所有课堂教学中,要通过教师和学生之间平等互动交流得以实现,构建以学生为主体的课程教学,让学生主动掌握知识、主动学习。在网络时代,各种课程平台相继建立,例如云班课、微信平台、微博平台、班级QQ等,这些都是学生课下互动的学习平台,此时教师应主动加入学生的课后互动中,及时为学生答疑解惑,同时获得学习反馈,便于做好课程教学的调整。此外教师也可以通过这些平台上传学?资料和软件项目制作案例,让学生的学习更加便利,帮助学生掌握知识。

3.加强实践教学,完善考核体系

本课程的实验课时为48课时,旨在通过实验训练学生的操作能力和知识运用能力。本教学环节在于考察学生对SQL Server 数据库理论知识和相应的技术应用的情况,会在上课期间为学生布置一个大作业,根据学生作业完成情况、实验表现、实验报告、动手能力来给出成绩,完成本环节的考核。这样的综合考核方式能够较为全面地考核学生,促进其学习的信心和热情。整个实验环节需要注意以下工作:

每一个实验项目都要做好精心设计,安排学生预习相关理论和操作内容,但实验过程中为学生做好相关的操作示范,全程认真指导,及时对学生的操作给予反馈,激励其学习。在整个操作过程中应强调协作、互动,对数据库表结构设计的合理性、缺陷、改进方案、注意事项进行探讨,提升学生的互助、沟通、分析和解决问题的能力。实验过程中所布置的大作业由2~3人一组协作完成,限定2周时间,题目范围是数据库管理系统的开发设计。这样的一个训练作业起到了整合程序设计类课程知识技能的作用,根据作业中学生所学开发设计工具的应用训练,促进学生的综合能力。

篇8

关键词:Java语言 数据库操作 方法

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2013)10-0042-02

在任何计算机语言中数据库都占据很重要的位置,可以说如果没有数据库就没有计算机语言的应用,对于Java语言中也是如此。当前主流应用的数据库服务器主要有,微软(MicroSoft)开发的SQL Server数据库、甲骨文(ORACLE)公司的MySQL数据库和Oracle数据库等,使用Java编程语言连接SQL Server数据库时,需要比较繁杂的系统环境配置,所以,在使用Java语言编写应用程序时,在数据库服务器的选择方面,多使用MySQL数据库或Oracle数据库。其中,中小型项目的开发一般多选用MySQL数据库,在大型项目在开发中,大多选用Oracle数据库。

在Java语言中,要对数据库进行显示、增加、修改、删除等操作,主要采用JDBC(Java DataBase Connection)技术。这种技术为开发人员提供了一个标准的API接口,程序员通过调用纯Java API来编写调用数据库在应用程序。除此之外,还可以通过编写程序调用JDBC的API,比较容易的实现对不同数据库的访问。

在计算机语言的学习过程中,对于大多数人来说数据库的连接和操作是一个难点,笔者在多年的Java语言实践中积累的连接和操作数据库的方法和技巧与大家一起分享。

1 Java连接MySQL数据库的方法

使用Java语言访问多种不同数据库的时候,可以通过编写JDBC API调用来实现,在连接不同数据库在时候,安装相应的驱动程序即可。例如:要连接MySQL数据库,就需要安装MySQL数据库的驱动程序“mysql-connector-java.jar”,这些驱动程序大多椒开源的,一般可以到官网或互联网上下载。下载后的驱动程序存放的位置有要求,如果你没有使用开放的开发环境,那么要将驱动程序存放在JDK安装目录下的lib文件夹中;如果你使用了Eclipse或其它的开发环境,那么要在这些环境中配置JDK的位置将驱动程序导入到里面。

安装完成数据库在驱动程序之后,就可以编写程序来实现对数据库的连接。

(1)Class.forName(“com.mysql.jdbc.Driver”);

//此步骤为驱动程序的加载,另外驱动程序的名字还可以为org.gjt.mm.mysql.Driver。

(2)Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名字”,“用户名”,“密码”);

//创建与数据库的连接

通过以上两步骤后即可以完成与数据库的连接,上面代码1中forName()方法会抛出ClassNotFoundException,代码2中getConnection()方法会抛出SQLException异常,所以在程序中要进行异常的捕获与处理。

2 数据库连接的技巧

2.1 数据库连接代码的复用

在一个项目开发过程中,需要经常的对数据库进行操作,那么我们不能在一个项目中多次写相同的代码,这样不利于代码的更新与维护,所以我们可以将连接数据库的代码单独的写在一个Java文件的构造方法中,这样在需要进行数据库连接时生成该类的对象即可调用到数据库连接的代码。

2.2 数据库连接对象的关闭

在应用程序运行在过程中,当客户端发起查询或更新请求时,应用程序就会通过JDBC API新建一个连接,与数据库进行通信。如果,应用程序有多个客户端需要频繁对数据进行操作,那么,就需要建立相应多个在数据库连接。所以,编写应用程序在时候在每一个客户端使用数据库完成之后,一定要释放连接资源,包括Connection对象、Statement对象和ResultSet对象,否则会因资源耗尽而使应用程序崩溃。因此,程序员在编写应用程序时,在处理数据库操作方面必须谨慎,保证每次的数据操作之后及时释放数据库连接资源,提高应用程序在稳定性和健壮性。

一个数据库通信连接一般可以支持多达几百个的Statement对象。通常,在应用程序中,每个程序在调用都需要构造一个物理连接,而且每个Statement对象需要单独占用一个物理连接。由于建立物理连接的在过程需要通过网络反复沟通,比较浪费时间,所以在连接数据库时,尽最大可能避免或者减少单个Statement对象独占物理连接在情况。这样的设置对于一般的网站来说还可以,如果一些访问量比较大的网站,当连接数超过这个值的时候数据库服务器就会报错,出现网站瘫痪等现象。所以对数据库操作完成后,要调用相关对象的close()方法,将所创建的数据库连接相关对象关闭,通常采取“先创建的对象后关闭”的原则。

在使用java编写应用程序时,通常将将数据库的连接、关闭与异常处理同时写在一个单独的类文件的相关代码。在类的构造方法中编写数据库连接、数据库关闭对象的方法,此外也可以将其它数据库的操作方法写在此方法中,例如数据库的查询、修改、插入和删除等。当需要进行数据库操作时,生成这个类的对象,就可以进行数据库的连接、关闭以及其它相关操作,提高代码在利用率。

(1)public class DBConnection {

(2)private String dbDriver="org.gjt.mm.mysql.Driver";

(3)private String url="jdbc:mysql://localhost:3306/shop";

(4)public Connection connection = null;

(5)public DBConnection() {

(6)try {

(7)Class.forName(dbDriver).newInstance(); // 加载数据库驱动

(8)connection = DriverManager.getConnection(url, "root", "123");

(9)} catch (Exception ex) {

(10)System.out.println("数据库驱动程序加载失败!"+ex.toString());}

(11)}

(12)public void clo(){

(13)try{

(14)if(connection!=null)

(15)connection.close();

(16)}catch(Exception e){

(17)System.out.print(e.getMessage());}

(18)}

(19)}

2.3 数据库连接池的使用

使用JDBC访问网络数据库虽然简单易用,但是这种方法对于Web开发来说,存在很多问题。比如文中前面提到的每一次Web请求都要建立一次数据库连接,即浪费时间又占用内存。而且对于大型的电子商务网站,同时几百人乃至几千人在访问量,在进行数据库连接操作时,要耗费大量在系统资源,影响网站的访问速度。在标准JDBC API接口中,并没有提供资源的管理方法,资源管理必须由应用程序自己负责管理。虽然在JDBC规范中,强调了资源的关闭、回收及合理运用,但最稳妥的方式,还是为应用程序提供有效的管理手段。

对数据库连接资源的管理是很重要的问题。我们可以使用“数据库连接缓冲池”来解决资源的频繁分配与释放所造成的问题。将数据库连接预先放在缓冲池中,当需要建立数据库连接时,就从“缓冲池”中取出,使用后再放回去。我们可以通过设定连接池中的最大连接数来防止太多的连接数量。

3 结语

上面讲述了Java连接MySQL数据库的方法和一些操作技巧,实际在进行数据库操作时还有很多可以优化的部分,除了优化代码部分以外,还可以优化数据库,包括数据结构的调整、SQL语句的调整和服务器内存分配的调整等等。另外在Java Web开发中也可以利用Hibernate框架来操作数据库,它是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用对象编程思维来操纵数据库。已经得到了广大企业和Java Web开发人员的认可。

参考文献

[1]黄丹.基于JDBC的数据库访问技术[J].软件导刊,2010(03).

[2]聂凯,曹慢慢.Mysql数据库的访问方法浅析[J].科技资讯,2010(09).

[3]张作宸.JDBC原理及操纵数据库方法[J].科技信息,2009(02).

篇9

关键词:SqlServer;数据库;维护计划;备份

中图分类号:TP309.3文献标识码:A 文章编号:1009-3044(2009)33-9617-03

The Research and Application of Sqlserver Automatic Secondary Backup

WU Yan, ZHANG Dong

(Fujian Polytechnic of Information Technology, Fuzhou 350003, China)

Abstract: Database is the heart of foreground application, every record has the staff's wisdom and hard work., they are all valuable asset. Back-up the database is the really essential method of preventing damage to hardware and software, human operational errors and so on that destroys the database. This paper describes the concrete steps that after the script for data backup based on Sql Server2000 database maintenance plan.

Key words: SQL Server; database; maintenance plan; backup

Sql Server数据库是目前广泛使用的数据库。备份和保护数据是数据库维护的首要任务,SqlServer本身具有比较强大的备份功能,但出现灾难的原因往往是由于硬盘的损坏,所以有必要在异地(异机)多保留一份备份数据,以备不测。这就要求我们除sqlserver自带功能外,还要探索其他的方法实现SqlServer数据库自动的异地备份。

1 备份目标

我们具体研究实现目标包括:每天对数据库进行两个不同时刻的完全备份、保留最近1周的备份数据、备份数据实现异地(异机)存放。

每天对数据库进行两个不同时刻的完全备份;保留最近1周的备份数据;备份数据实现异地(异机)存放;对于目标的前两条,我是利用SQL Server 2000本身自带“数据库维护计划”来实现的;而最后一条我是通过手工编写脚本来实现的。

具体如下:“数据库维护计划”是SQL Server 2000能够实现自动备份调度,以及自动删除旧的数据备份,完全能够满足我我们备份要求。

2 实现步骤

2.1打开SQL Server“企业管理器”窗体

用鼠标单击任务栏上的“开始”按钮中的“程序(P)”菜单下的“Microsoft SQL Server”子菜单中的“企业管理器”菜单项,即可打开SQL Server 2000的“企业管理器”窗体。

2.2找到“数据库维护计划”功能

在“企业管理器”窗体中左侧的树型选项卡中,用鼠标单击“+”图标扩展开“控制台根目录”下的“Microsoft SQL Servers”,可以看到其下有一个“SQL Server组”;接着继续扩展开“SQL Server组”,此时可以看到其下出现了服务器的名称;再继续扩展开此服务器,可以看到其下列出了诸如“数据库”、“数据转换服务”等项目;最后单击“管理”项目,可以看到其下存在一个“数据库维护计划”(如图1)。

2.3创建“数据库维护计划”

鼠标右击“数据库维护计划”项目,选择“新建维护计划(P)”功能,将打开“数据库维护计划向导”窗体,依照此向导能够创建一个新的“数据库维护计划”。

步骤1:单击 “下一步(N)”按钮,打开“选择数据库”窗体(如图2)。在此窗体中选定文献系统数据库“tsgdb”。

步骤2:单击图2中的“下一步(N)”按钮,打开“更新数据优化信息”窗体(如图3)。

在此窗体中可以对数据库中的数据和索引重新进行组织,以及能够设定在满足一定条件的情况下,维护计划自动删除数据库中的未使用的空间,以便提高性能。

本人没有使用其中的功能。

步骤3:单击图3中的“下一步(N)”按钮,打开“检查数据库完整性”窗体,如图4所示。

在此窗体中可以设定维护计划在备份数据库前自动检查数据库的完整性,以便检测由于硬件或软件错误而导致数据的不一致。选中“检查数据库完整性[H]”复选框,因为有可能会修正一些错误,使备份的数据更有效。

步骤4:在“检查数据库完整性”窗体中的“下一步(N)”按钮,打开“指定数据库备份计划”窗体。因为图书馆开馆时间为8:00――12:00和14:00――21:00,所以我在“调度”中设为每天12:30开始备份和21:30开始备份,这样做,即提高了数据库备份的效率,又不会影响到文献系统的正常使用。

对数据库进行备份,则必须选定“作为维护计划的一部分来备份数据库[A]”复选框,指定存储备份文件的位置:磁盘。设定“调度”后单击“下一步(N)”按钮则显示“指定备份磁盘目录”窗体(如图6)。

在图6中,指定存储备份文件的目录备份文件扩展名,因为我要保存最近1周的备份,所以设置备份计划自动地删除早于1周的备份文件。设定后,单击“下一步(N)”按钮则显示“指定事务日志备份计划”窗体。

步骤5:指定“事务日志备份计划”的过程与步骤4的过程完全相同,只是在设定“调度”上稍有差别(因为我的要求是数据库每天备份一次,事务日志每1小时备份一次)。

步骤6:对事务日志的备份计划全部设定后,单击“下一步(N)”按钮则显示“要生成的报表”窗体。在此窗体中可以指定用于存放整个备份计划执行过程中的日志的目录。

步骤7:完成步骤6后,单击“下一步(N)”按钮则显示“维护计划历史纪录”窗体。

在此窗体中可以指定如何存储此维护计划的历史纪录(是存放在“本地服务器”上,还是在“远程服务器”上),而且通过指定表中的行数可以限定历史纪录的存储大小。

步骤8:完成步骤7后,单击“下一步(N)”按钮则显示“正在完成数据库维护计划向导”窗体(如图7)。

在此窗体中自定义一个“计划名”为“tsgdb备份”。

步骤9:完成步骤8后,单击“完成”按钮,则显示“维护计划已创建成功。”的提示框,再单击 “确定”按钮即成功地设定了文献系统数据库维护计划。

2.4 启动SQL Server 2000以便执行“作业”

完成第三步后,还需启动SQL Server 2000 Agent(),以便执行“数据库维护计划”作业。

与展开SQL Server 2000“数据库维护计划”的步骤一样,在“管理”项目中,可以发现存在一个“SQL Server ”。

2.5 检查结果

经过上述步骤后,文献系统数据库的备份计划就建立起来了。可以通过“资源管理器”来检查备份目录下是否存在相应地备份文件。

通过以上操作,已经实现了在服务器上保留最近一周的备份数据了,为了防止服务器本身硬件故障等情况对备份数据造成破坏,我又通过编写脚本实现了备份数据的异地(机)存放。具体如下:

3 编写脚本

新建文件名为cptsgdb.txt的文本文件,在其中编辑以下内容(如图8):

net use \\172.16.0.8\DB_bk PASSWD_for_tsg /user:tsg

REM start copy

cd C:\WINDOWS\system32

xcopy.exe \\172.16.0.8\tsg\DB_back\*.* g:\ /e/h/y/d

说明:

172.16.0.8是数据库服务器,DB_bk为服务器上存放备份数据的目录,一定要先将其共享。

・ net use \\172.16.0.8\DB_bkPASSWD_for_tsg /user:tsg

以用户tsg访问DB_bk目录,PASSWD_for_tsg是用户tsg的密码。

・ REM start copy 此为注释行

・ cd C:\WINDOWS\system32 切换当前目录到system32

・ xcopy.exe \\172.16.0.8\tsg\DB_back\*.* g:\ /e/h/y/d

将服务器上的备份数据拷贝到本地g盘中。参数含义:

/e复制目录和子目录,包括空的。

/h也复制隐藏和系统文件。

/y禁止提示以确认改写一个。

/d只复制那些源时间 比目标时间新的文件。

编辑完成后保存文件,将文件后缀改为.bat,这样就生成了一个批处理文件,我们使用windows自带的“任务计划”来调度它,实现数据在两台计算机之间的自动定时copy。

4 结论

这样对数据库的异地备份的实现,这样我们就能有效防止软硬件损坏、人为操作错误等对数据库造成破坏,来保障数据内容。

参考文献:

[1] 萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2004:247-248.

[2] 张家爱.基于日志的数据恢复及其在SQLSERVER中的实现[J].农业网络信息,2009(1).

[3] 赵松涛.SQL SERVER2000系统管理与应用开发[M].北京:人民邮电出版社,2006:18-20.

篇10

关键词:组态王;SQL;各向异性;系统研发 

DOI:10.16640/j.cnki.37-1222/t.2016.02.089 

1 前言 

土工合成材料与土体界面的相互作用属不同介质之间的问题,是当今岩土工程的热点问题之一。筋-土界面上的摩擦阻力系数则是加筋土结构设计和分析的重要参数,性能参数的精准测量对实际土体加筋工程具有重要指导意义[1-2]。我院自主研发一套充分考虑土工合成材料力学性能各项异性的新型直剪设备,避免了现行规范中试验测试值与土工合成材料实际受力特性严重不符的问题,有效地解决了土工合成材料工程应用中存在的安全隐患。同时,搭建一套基于组态王与SQL数据库的直剪试验操作系统,实现了系统工作状态实时监控、特征数据实时显示,数据及参数曲线输出、存储、查询等功能,并对试验数据进行处理,获得了国家规范要求的土工合成材料剪切性能参数系列评价指标,计算结果准确可靠。 

2 土工合成材料各向异性直剪仪介绍 

直剪设备主要包括机械、气动以及电气控制三大系统,如图1所示。机械部分主要包括机架、顶尖、回转驱动、气缸支撑架、上下剪切盒、直线导轨副等;气动部分主要由气缸、空压机、阀体等组成;电气控制系统主要由伺服电动缸、可编程控制器、传感器、触摸屏等组成。 

本设备采用整体式机架,结构紧凑,系统刚度大、强度高,极好地降低了导轨变形率,为直剪性能参数的精准测量建立结构基础。上剪切盒外部形状采用正八边形以便于顶尖定位、加强系统可靠性及可加工性,同时相较于四边形、六边形等形状有效减小下剪切盒内径,进而减小回转驱动尺寸,降低整机尺寸及重量。高性能回转驱动实现下剪切盒0~360°任意角度精确旋转,实现土工格栅各向异性性能参数直接测量,完美解决了现行规范试验测试值与土工合成材料实际受力特性严重不符的问题,同时回转驱动具备自锁功能以保证直剪试验中剪切面不发生旋转,保证直剪试验准确。 

采用气动加压结合数据实时采集模块,对压力进行实时调节,保压时间高达2h且气压变化率≤0.1%,实验过程压力稳定确保试验采集数据准确可靠。采用高精度伺服电动机与压力传感器联合控制的方法,使剪切速度、剪切位移、剪切力得到精确控制,设备性能参数如表1所示。 

3 直剪试验操作系统 

(1)系统功能介绍。直剪试验操作系统用来指导操作人员安全高效、智能规范的开展土工合成材料剪切性能检测,实现系统工作状态实时监控、特征数据实时显示及剪切性能数据及曲线输出、查询等功能。本系统共分为系统菜单、操作功能按钮、法向应力与实验时间显示、状态指示灯以及用户登录/退出等5个功能区,如图2区域1~5所示。 

系统菜单分为系统说明、参数设置、实时数据、数据输出、系统调试以及报警信息5个功能模块。法向压力及实验时间反应实验过程实时法向应力以及实验剩余时间。状态指示灯区域包括5个状态指示灯,系统状态正常色为绿色,异常时为红色;运行状态运行过程为绿色,试验停止为灰色;报警状态未出现报警为绿色,出现伺服异常、行程超出范围、电机超载、压力气路连接异常等状况时为红色;法向应力正常为绿色,应力波动范围超出理论法向应力的2%时指示灯为红色。限位状态反应剪切位移是否超出行程范围,正常为绿色,超限则为红色。 

(2)系统操作流程及SQL实现。打开/退出组态王,进行SQL连接/连接,功能实现命令语言为:SQLConnect(IDDevice,"dsn=;uid=;pwd="),SQLDisconnect(\\本站点\IDDevice) 

上述命令语言实现了组态王与SQL数据源的连接/断开,将此命令写入组态王应用程序命令语言的启动/结束中,以实现系统开始运行时就可以连接/断开到数据库[3]。 

进入【系统调试】界面,调试各功能按钮与数据显示框,检查系统是否正常;进入【参数设置】界面,输入实验参数和运动参数;点击【加压】按钮,并根据界面中间法向应力显示框进行调整直至试验理论值;点击【预压】,弹出预压界面,并进行系统预压5 min以保证后续实验过程压力稳定。 

预压结束,点击【电机使能】按钮,若参数输入不合理则弹出提示窗口,输入合理则电机上电,功能实现命令语言如下:SQLCreateTable( \\本站点\IDDevice,\\本站点\实验时间与日期, "直剪仪实时数据") 

上述命令语言实现了按照设定表格模板的格式在数据库中以实验日期与时间新建数据表格,将此命令写入【电机使能】按钮的按下时,以实现数据库表格的创建。 

点击【开始】,进入【实时数据】界面开始实验,每10s将数据存一次,命令语言如下:

SQLInsert(\\本站点\IDDevice,\\本站点\实验时间与日期, "直剪仪实时数据") 

组态王将记录体相关联的变量当前值插入到SQL数据库表格中,从而生成一条新的记录,达到将组态王中的数据写到外部数据库的目的。 

实验时间为0或者点击【停止】按钮,进入数据是否保存对话框,若删除当前试验数据则命令语言如下: 

SQLSelect( \\本站点\IDDevice, "实验时间汇总", "报表名", "", "" ); 

SQLDelete(\\本站点\IDDevice, "实验时间汇总",whereexpr); 

点击【卸压】按钮;点击【归零】按钮,并弹出系统回零等待界面,当回零动作完成后,该窗口自动关闭;点击【电机去使能】按钮,关闭电机;若继续进行实验,点击【加压】按钮并按照步骤3-11开展实验,若结束实验则点击【结束】按钮。 

进入数据输出开展后期数据处理。数据输出分为【数据报表】和【曲线输出】两个功能,先从“实验时间选择”下拉列表框中选择相应试验数据日期,之后根据需要选择报表/曲线预览、打印、删除等功能。 下拉列表框日期显示SQL实现语言如下: 

SQLSelect( \\本站点\IDDevice, "实验时间汇总", "记录报表名", "", "" ); 

SQLNext( \\本站点\IDDevice); 

当需要将数据库中的数据调入组态王来显示,将此命令写入相应功能按钮按下时,并添加查询下一条记录的命令,实现数据库数据的逐条查询。 

4 试验实例数据处理 

本文从“实验时间选择”下拉列表框中选择“2015年5月26日11时23分”数据为处理实例,依次实现数据的报表预览、曲线显示,数据处理结果如图3所示,并处理计算剪切位移与剪切力关系,如图4所示。 

图3(b)所示曲线可依据需要选择坐标轴,仅选择一项则默认时间为横轴,若选择两项则第一选择项为横轴,第二选择项为纵轴。点击【选取】按钮后,曲线显示控件的横/纵轴量程将依据实验数据进行合理调整。图4所示曲线给出了剪切位移与剪切力关系图,并能根据需要通过“实验时间选择”添加多条曲线实现数据对比,实现曲线保存、打印和清空操作。 

5 结论 

本文研制的新型直剪设备结构简单、对环境友好,安全性能高,基于组态王与SQL数据库研发的试验操作系统,可实现工作状态实时监控、特征数据实时显示,性能参数后期处理等功能,操作简单、计算准确可靠,具有很好的应用价值。 

参考文献: 

[1]周杨,李晓莹.土工合成材料直剪与拉拔联合试验仪的研制[J].路基工程,2006,12(06):82-83.   本文由wWw.DyLw.NeT提供,第一论 文 网专业教育教学论文和以及服务,欢迎光临dYlw.nET

[2]邓子健,沈跃.沥青路面层间抗剪强度试验分析[J].山西交通科技, 2006,181(04):11-14.