防止同一用户重复登录的解决办法(SQL Server)
时 间:2010-11-21 00:00:00
作 者:红尘如烟 ID:10768 城市:成都
摘 要:在开发管理信息系统的时候,经常会遇到需要防止同一个用户多次登录的问题,这时介绍了一种简单易行的办法。
正 文:
在开发管理信息系统的时候,经常会遇到需要防止同一个用户多次登录的问题,这里介绍了一种简单易行的办法。
注意:此方法仅适用于以SQL Server作为数据库的情况下。
实现思路:在SQL Server中,当连接断开之后,系统会自动将临时表回收,因此我们就可以通过创建和登录用户名对应的全局临时表,然后登录时判断这个临时表是否存在。如果存在,说明其对应的用户名已登录,则弹出消息提示不能重复登录;如果不存在,则登录并创建临时表。
说明:使用此方法的优点再于,已登录标记是在客户端发送请求并建立连接后创建的,但退出登录则不需要客户端去处理,只要到SQL Server的连接断开了,这个标记就会被自动销毁,这个销毁操作是由数据库服务器来执行的。因此即使客户端因为断电、程序崩溃一类的原因非正常退出,并且不论一个用户是在同一台电脑上登录,还是在不同的电脑上登录,也都是有效的!不需要管理员到用户表中去修改用户的登录状态什么的。
Function IsLogged(UserID As String) As Boolean
'判断指定用户是否登录,已登录返回True
Dim rst As Object
Dim cnn As Object
Set cnn=CreateObject("ADODB.Connection")
cnn.Open "Provider=SQLOLEDB;Data Source=服务器名或IP或域名","数据库用户名","数据库用户密码"
Set rst = cnn.Execute("Select OBJECT_ID('##LoggedUser" & UserID & "') AS ID")
If Not IsNull(rst!ID) Then IsLogged=True
rst.Close
cnn.Close
End Function
Function UserLoginRegister(UserID As String) As Boolean
'创建登录标识(即创建用户名对应的临时表)
Dim cnn As Object
Set cnn=CreateObject("ADODB.Connection")
cnn.Open "Provider=SQLOLEDB;Data Source=服务器名或IP或域名","数据库用户名","数据库用户密码"
cnn.Execute "Create TABLE ##LoggedUser" & UserID & "(userid varchar(1))"
cnn.Close
End Function
'然后我们在登录窗体窗体的“登录”按钮事件中进行如下判定:
Private Sub cmdLogin_Click()
If IsNull(Me.txtUserName) Then
MsgBox "请输入用户名!",vbExclation
Exit Sub
End If
If Is Logged(Me.txtUserName) Then
MsgBox "此用户已登录!",vbInformation
Else
'密码验证代码略
UserLoginRegister Me.txtUserName
DoCmd.OpenForm "frmMain"
End If
End Sub
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)