需求介绍:

现在正在开发的机房收费系统,总得来说,是对学生上机进行收费管理(没有要在学校开网吧的意思啊!为了学习面开发的)大体的功能是这样的:学生上机,然后刷卡,下机的时候,再刷卡,然后通过对学生的上机时间收取相应的费用,同时,该系统还可以统计与维护学生的基本信息、上机记录、学生注册、充值、退卡等功能。
     其中有一个功能是学生注册,功能:注册学生的基本信息,同时可以在该学生帐户下存入一定的金额。

解决思路与办法:

因为,要学生注册信息的同时要对学生帐户进行充值,所以说要涉及到两个表的操作。一个是学生的基本信息表:student,还有一个是学生的充值记录表:RechargeRecord。可以想到,如果学生注册成功,那么,必须要向充值表中写入相应的充值记录,所以,我的解决办法,是用事务来实现。因为事务是原子性,可以要么都做,要么都不做。就算是写入到了学生的基本信息表,但是充值表中没有写入记录,也是注册不成功。
所以,我把事务写成了存储过程,让应用程序来调用:
下面是我的存储过程:
  1. USE [ChargeSystem]
  2. GO
  3. /****** 对象:  StoredProcedure [dbo].[StudentRegister]    脚本日期: 02/11/2012 14:30:08 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- =============================================
  9. -- Author:      <Author,,Name>
  10. -- Create date: <Create Date,,>
  11. -- Description: <Description,,>
  12. -- =============================================
  13. ALTER PROCEDURE [dbo].[StudentRegister]
  14. -- Add the parameters for the stored procedure here
  15. @CardNO varchar(10),
  16. @StudentNO varchar(20),
  17. @StudentName nvarchar(10),
  18. @Sex nvarchar(2),
  19. @STClass nchar(2),
  20. @Grade nchar(3),
  21. @Specialty nvarchar(50),
  22. @Amount numeric(5,1),
  23. @Status nvarchar(3),
  24. @UserType nchar(4),
  25. @Remarks nvarchar(50),
  26. @RechargeTime datetime,
  27. @Teacher nvarchar(50)
  28. AS
  29. BEGIN
  30. -- SET NOCOUNT ON added to prevent extra result sets from
  31. -- interfering with SELECT statements.
  32. SET NOCOUNT ON;
  33. -- Insert statements for procedure here
  34. declare @Transaction_name varchar(32)
  35. select @Transaction_name='my_transaction_register'
  36. begin Transaction @Transaction_name
  37. insert into students values(@CardNO,@StudentNO,@StudentName,@Sex,@STClass,@Grade,@Specialty,@Amount,@Status,@UserType,@Remarks)
  38. insert into RechargeRecord values(@CardNO,@StudentNO,@StudentName,@RechargeTime,@Amount,@Teacher)
  39. commit transaction
  40. return @@error
  41. END

其中用@@error来取得执行结果

机房收费系统中——存储过程中加入事务,实现学生注册相关推荐

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

    在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...

  2. 【软工文档】机房收费系统之软件需求说明书

    1引言...2 1.1编写目的...2 1.2背景...2 1.3定义...3 1.3.1 专门术语的定义:...3 1.3.2 相关技术与开发工具介绍:...3 1.4参考资料...3 2任务概述. ...

  3. 【软工文档】机房收费系统之详细设计说明书

    1引言...2 1.1编写目的...2 1.2背景...2 1.3定义...2 1.4参考资料...2 2程序系统的结构...2 3程序1(标识符)设计说明...2 3.1程序描述...3 3.2功能 ...

  4. 机房收费系统总结【1】-整体流程

    前言: 拖了3个月终于学完了机房收费,真正做机房的时间不到一个月,拖了好久,不应该! 以后,在学习的过程中遇到的问题(计算机+心得体会)在今目标的项目上简单标注! 这个过程中自己解决的问题博客总结!还 ...

  5. 机房收费系统问题集(2)——移动登陆界面+show出子窗体

       安装上机房收费系统样本,连接上数据库,在运行的时候,我很是佩服机房收费系统的高大上    在我亲自敲的时候遇到了下面的问题: (1)登陆界面不能用鼠标移动    在机房收费系统的样本中,登陆界面 ...

  6. 机房收费系统_刷卡充值功能的实现

    前言 在做机房收费系统的过程中,添加了硬件刷卡器,通过IC卡来实现用户的账号充值,提这个需求之前就一直在考虑有没有必要,因为注册功能是用户自己的操作的,本着求同存疑的原则,保留了刷卡的功能接口. 正文 ...

  7. 机房收费系统总结——心态篇

    写机房收费系统的这三个月,对写代码的认识更深刻了,对学习的过程也更多了点体会. 多敲代码:从软件工程到UML,C#,设计模式,再到vb.net.这个过程中只敲了敲教程中的代码,没实现过其他什么例子,也 ...

  8. 机房收费系统个人重构版:软工文档中那些图

    [前言]    图,提到这个字的时候脑海中就会出现许许多多的图像,它的重要性相信大家都明白,相比于文字来说它更生动形象正好符合人类大脑的记忆规律:很多人也知道动画片制作原理也是用一张张图片只不过转换的 ...

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

    从一开始对于机房收费系统的无从下手,到现在已经接近尾声,像冬天的迷雾一样,随着时间散开了去,对于其也是越来越清晰,想一想,这种学习的过程还真是美妙. 当然只学习不去总结是没有意义的.今天我就来把存储过 ...

最新文章

  1. 学习webpack记录(一)
  2. ArcEngine 图层标注 (根据字段、角度)
  3. 「权威发布」2019年全国大学生电子设计竞赛获奖名单【涵盖国一、二等奖】
  4. String中的compareTo()方法
  5. 爬虫软件python功能_Python 网络爬虫程序详解
  6. 【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...
  7. WP8模拟器需要BIOS开启虚拟化支持(转载)
  8. 灵玖软件:九眼智能文档核查云平台上线了
  9. [Err] 1093 - You can't specify target table 's' for update in FROM clause
  10. x86_64的debian(wheezy)下使用qemu和busybox运行linux
  11. GitHub 桌面版 v3.0 新特性「GitHub 热点速览 v.22.18」
  12. Foxit PDF SDK for iOS--零基础Cordova开发
  13. Linux环境下ARM开发工具TrueSTUDIO初体验
  14. 电脑端微信双开,教你两种简单的方法,上手即用!
  15. 本地代码无问题邮件却发送失败的问题
  16. 高博应诺培训班学习一个月总结
  17. cad找形心插件 lisp_九款CAD达人必备的插件,你都装了吗?
  18. 〖小狼毫〗小狼毫使用教程『完善版本』
  19. AngularJS中自定义指令
  20. BZOJ1084洛谷P2331 [SCOI2005]最大子矩阵

热门文章

  1. 【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合 | 集合的 each 方法返回值分析 )
  2. 【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )
  3. 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
  4. 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )
  5. 【软件工程】CMMI 能力成熟度模型集成 ( CMMI 工程过程域 | CMMI 支持过程域 ) ★
  6. 【计算机网络】应用层 : DNS 域名解析系统 ( 域名 | 域名服务器 | 域名解析过程 | 递归查询 | 迭代查询 | 高速缓存 )
  7. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
  8. 第五节、实现接口 [转贴]
  9. Dart 调用C语言混合编程
  10. canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)...