欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

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

发布时间:2025/6/15 windows 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 机房收费系统中——存储过程中加入事务,实现学生注册 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

需求介绍:

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

解决思路与办法:

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

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

    总结

    以上是生活随笔为你收集整理的机房收费系统中——存储过程中加入事务,实现学生注册的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。