合作开发收费系统——临时表解决用户重复登录问题
来源:互联网 发布:上海行知小学怎么样 编辑:程序博客网 时间:2024/04/28 22:52
用户重复登录问题,是指同一个用户能够用自己的账户和密码能够同时多次登录。这样的情况在实际使用中是不允许的,就跟QQ、飞信一样,如果你已经登录,等到再次登录的时候,系统就会提醒你“该账户已经登录,不允许重复登录!”
在首次解决这个问题的时候,我是在数据库中建立一个T_Onduty的表,负责写入登录用户的登录信息,等到用户退出系统的时候,再去删除表中该信息的。当某用户登录的时候,首先去查询这张表是否有该用户的登录信息,若有信息,则代表其已经登录,提示其能重复登录;反之则能正常登录。
在理想状况下,只要用户正常退出系统,就能保证这个方法有效。但是我们不但要面对正常情况,更要面对异常情况,能面对异常才是健壮的程序。试想,如果用户正常登录后,登录信息已经写入T_Oduty ,此时突然遭遇断电,表中的信息没有按照设定删除,待到该用户下次登录的时候可想而知,肯定被提示已经登陆了,用户肯定会以为活见鬼了,这是我们不想看到的。T_Onduty是固定的表,后来换做临时表解决了这个问题。
建立一个临时表,来存储该用户登录信息,该表不但能像固定的表防止二次登录,当系统关闭(无论是正常或异常)的时候,该表自动被数据库删除了,下次登录的时候就不会提示二次登录了。
为了调用方便,我们用存储过程完成了该功能:
存储过程的实现:
ALTER procedure [dbo].[PROC_UserLogin]@userID char(10),--用户名@loginDate char(10),--登录日期@loginTime char(10),--登录时间@user char(10)as beginif OBJECT_ID ('tempdb.##T_Onduty')is null--如果数据库临时表不存在,执行以下操作begin create table ##T_Onduty(userID char(10) ,loginDate char(10),longinTime char(10) )--创建临时表insert ##T_Onduty values (@userID) ,(@loginDate) ,(@loginTime)--创建表的同时,将登录信息写入登录信息return '1'--返回代表首次登录,允许其登录endelse--如果临时表已存在,做一下操作select @user =userID from ##T_Onduty where userID =@userID --查询该用户的信息if @userID=null --若不存在记录,则代表没有登录begininsert ##T_Onduty values (@userID) ,(@loginDate ),(@loginTime )--将登录信息写入临时表return '1'--返回代表首次登录,允许其登录endelse--如果存在该用户的信息beginreturn '0'--返回代表已经登录,提示不允许期登录endend
调用存储过程:
Public Function ExecuteProce(ByVal strPro As String, ByVal cmdType As CommandType, ByVal userEn As En.User) As Integer cmdSQL.Parameters.Add(New SqlParameter("@userID", userEn.userID)) '添加传入参数@userID cmdSQL.Parameters.Add(New SqlParameter("@outResult", SqlDbType.BigInt)) '添加传入参数@outResult cmdSQL.Parameters("@outResult").Direction = ParameterDirection.Output '添加传出参数@outResult cmdSQL.CommandType = cmdType '设置命令类型为存储过程 cmdSQL.Connection = cnnSQL '指定链接字符串 cmdSQL.CommandText = strPro '指定存储过程 Try cnnSQL.Open() cmdSQL.ExecuteNonQuery() Return cmdSQL.Parameters("@outResult").Value() cmdSQL.Parameters.Clear() Catch ex As Exception Return Nothing Finally Call CloseSQLConnection() Call CloseSQLCommand() End Try End Function
1 0
- 合作开发收费系统——临时表解决用户重复登录问题
- 合作开发项目总结——机房收费系统
- 合作版机房收费系统—文档
- 机房收费系统合作版----登录调试
- 机房收费系统—登录
- 首次合作开发 收获总结 (收费系统)
- 机房收费系统合作开发之界面
- 合作开发机房收费系统小结
- 机房收费系统合作版开发感受
- 合作版机房收费系统——报表
- 机房收费系统合作版——开幕
- 机房收费系统合作版(七)——总结
- 【机房收费系统合作版】——再看外观模式
- 项目总结——机房收费系统合作版
- 机房收费系统合作——再看数据库设计
- 【VB.NET版机房收费系统】——三层VS七层用户登录
- 机房收费系统之用户登录
- 机房收费系统——登录窗体
- note : SetServiceStatus
- github quercus demo备忘
- SDL游戏之路(十一)--按钮制作
- Hibernate的事务控制
- ubuntu 12.04创建本地源
- 合作开发收费系统——临时表解决用户重复登录问题
- Hadoop源码分析之NameNode元数据的存储
- Delphi 之 Windows 7 下 UAC 研究
- Spring IOC容器的实现
- javascript 数组元素排序.mark
- 马上有耐心~ 第0篇- 开天辟地!
- Java多线程学习(三)——Sharing Objects
- UITextView使用中的一点问题(无法从第一行开始显示)的解决办法
- 创建和配置UIWindow