机房收费系统重构之存储过程的使用

从一开始对于机房收费系统的无从下手,到现在已经接近尾声,像冬天的迷雾一样,随着时间散开了去,对于其也是越来越清晰,想一想,这种学习的过程还真是美妙。

当然只学习不去总结是没有意义的。今天我就来把存储过程的使用总结一下。拿用户注册来说,就是往数据库里添加用户,以方便更多的用户使用。那么用户注册我们要注意到什么呢?

1.通过卡号判断用户是否已经存在。

如果不存在该用户:

2.将信息写入学生表。

3.更新充值记录表

4、更新卡表中的余额。

我们分析可以得到,如果不存在该用户,我们需要同时改动三个表。当然,你可以去一条一条的去写,但是这种做法不是我们想要的,今天是三个表,下次是三十个表,你还一条一条的写?所以在这里我们就引入了存储过程。

一、什么是存储过程呢?

定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

讲到这里,可能有人要问:这么说存储过程就是一堆SQL语句而已啊?Microsoft公司为什么还要添加这个技术呢?

那么存储过程与一般的SQL语句有什么区别呢?

二、存储过程的优点:

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量

4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

三、存储过程的种类:

1.系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息

2.扩展存储过程   以XP_开头,用来调用操作系统提供的功能

3.用户自定义的存储过程,这是我们所指的存储过程

常用格式

create proceduresp_name

@[参数名] [类型],@[参数名] [类型]

as

begin

.........

end

四、调用存储过程

1.基本语法:exec sp_name [参数名]

五、删除存储过程

1.基本语法:

drop procedure sp_name

2.注意事项

(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程。

就好比机房收费系统中注册中用到的:

CREATE PROCEDURE [dbo].[PROC_Register]
@cardNo char(10),@studentNo char(10),@name ntext,@sex nchar(10),@department char(10),@grade nchar(10),@classgrade nchar(10),
@cash decimal(18,2),@cardStatue char(16),@cardType char(8),
@chargeMoney decimal(10,4),@chargeDateTime datetime,@userName char(10),
@statue ntext,@registerDateTime date,@checkStatue char(10)
AS
BEGIN
	--添加卡表
	insert into T_CardInfo (cardNo ,studentNo ,cardStatue ,cash,cardType ,registerDateTime ,userName ,checkStatue  ) values (@cardNo ,@studentNo ,@cardStatue ,@cash,@cardType ,@registerDateTime ,@userName ,@checkStatue  )
	--添加到学生表
	insert into T_StudentInfo (studentNo ,name ,sex ,department ,classgrade ,statue ,grade ) values (@studentNo ,@name ,@sex,@department,@classgrade ,@statue,@grade)
	--添加到充值记录表
	insert into T_Recharge (cardNo ,chargeDateTime ,chargeMoney ,userName ) values (@cardNo ,@chargeDateTime,@chargeMoney,@userName)
END

这样就可以轻松的操作在三个表中,当然存储过程远远不止这些,并且在以后学习中,我们还会继续研究。

像我们需要修改三张表一样,当一件同样的事情,需要我们来做三次,我们就要敢于去想一个比较高效的办法,像我之前就没有去想的这样一件事情,所以,我们还要去敢想,因为不知道有多少人在我们敢想之前做了出来。

时间: 2024-10-26 01:32:25

机房收费系统重构之存储过程的使用的相关文章

机房收费系统重构(三)

前段时间用简单的三层实现了窗体登录功能,心中有点小小的成就感,但是很快就被泼了凉水,机房收费不可能只用三层实现,如果你用三层,也就是说后面机房收费所有的功能都必须使用三层来实现功能.所以一周前始了七层的研究.经过一个星期的看博客,总结,调代码,终于实现了窗体登录,信息录入,和简单充值查询功能.   说说自己这次七层之旅的总结吧.   1.毋庸置疑,研究一个窗体功能,我首先判断的是需要用到数据库中的哪些表(这是属于我自己的编程习惯,不适用全部),然后再实体层中将表中的字段表示出来,有多少个表就有多

机房收费系统重构(五)—登陆窗口完整版

     在上上篇.<机房收费系统重构(3)>.中主要是介绍了自己关于DAL层,工厂层.以及接口层,还有实体层的理解.可是好多读者再问我.你的代码呢,我在这解释一下.就是我仅仅是写出关于那几部分的理解,并没有写贴出代码让大家研究的.可是不能顺应民心的文章不是好文章,所以我在这篇文章中,将机房收费登录中七层中全部的代码,贴出来供大家拍砖斧正.还有最后我在谈谈针对BLL层和外观层的理解.      首先我所说的七层是针对UI层,外观层,BLL层,DAL层,工厂层,实体层,接口层七层组成.    

机房收费系统重构(五)

     在上上篇,<机房收费系统重构(3)>,中主要是介绍了自己关于DAL层,工厂层,以及接口层,还有实体层的理解,但是好多读者再问我,你的代码呢,我在这解释一下,就是我只是写出关于那几部分的理解,并没有写贴出代码让大家研究的,但是不能顺应民心的文章不是好文章,所以我在这篇文章中,将机房收费登录中七层中所有的代码,贴出来供大家拍砖斧正,还有最后我在谈谈针对BLL层和外观层的理解.      首先我所说的七层是针对UI层,外观层,BLL层,DAL层,工厂层,实体层,接口层七层组成.      

vb.net机房收费系统重构——总结(二)软件工程文档1

学软工时常常听到:这是我们迈向职业化的一步.软件工程文档在一个项目开发中必不可少,通过这次重构,将以前的软件工程,UML重新认识,梳理,实用了一遍有了更深刻的体会,我在机房重构中,一共编写了七个文档,分别是 1.项目开发计划 2.软件需求说明书 3.数据库设计说明书 4.概要设计说明书 5.详细设计说明书 6.机房收费系统测试计划 7.机房收费系统用户操作手册 在这里只讲一下项目开发文档中各种需要的图.表. (一)软件项目开发计划: 文档的目的不用说,在这里面最重要的两个内容:项目的人员分工,以

vb.net版机房收费系统重构

机房收费系统重构版终于正式开工了! 前几天,刚刚看完三层的视频,在视频中详细的讲解了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就很快就开始机房收费系统的重构了.可是谁想到,当我一打开编程软件,就让我"碰了一鼻子的灰"!首先是不知道vs 怎么用,其次就是看三层的时候,登录的实例使用C#写的,而这次我们需要用VB.NET写,所以对于其中的语法是知之甚少.虽然,前段时间我看了一遍台湾讲师--曹祖胜的<VB.NET 视频>,但是他讲的几乎都是一

机房收费系统重构(六)—泛型集合

      机房收费系统重构仍在进行,但是在进行过程中,也许数据类型的转换是永远也避不开的,今天我就来讲讲关于数据类型转换的问题!       在个人版机房收费系统中,在DAL层中,如果是增删改,是不需要返回参数的,返回值是Boolean,但是在查询中,需要有返回值,而且返回的是Dateset类型,所以在这里问题就来了.      如果在返回值过程中一直返回的是表的类型,也许就没有那么多麻烦的事情了,但是dateset使得系统具有了强耦合性,但是如果返回的是实体类呢!关于这点我也查了查资料,为什

机房收费系统重构——数据库设计

终于,走到了机房收费系统重构的阶段-- 之前的一遍机房收费系统的数据库是用的给的那个,只是把每个表都看了一下,当时也没有学习数据库原理那本书,然后就没有深究-- 现在不一样了,我们进行机房收费系统重构,况且学习了数据库原理这本书,对数据库有了更深的认识.所以对于数据库要好好的设计,按照步骤走-- 数据库技术是信息资源管理最有效地手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库的设计的步骤和各阶段的主要内容

机房收费系统3之存储过程

一,定义 官方定义:是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 个人理解:对数据库进行复杂操作时,比如对多个表进行Update,Insert,Query,Delete时,对这些复杂操作的SQL语句的封装. 二,基本语法: 1.创建存储过程 基本语法:create procedurepro_name() begin ......... End 注意:过程名:尽量以pro_或者proc_开

vb.net机房收费系统重构——存储过程的使用

在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. [存储过程的使用] 首先,打开数据库--存储过程 右键-新建存储过程 CREATE PR