防止同一用户重复登录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
可我不太理解怎样建立全局临时表,就是关于红色代码的地方,请各位前辈能给解释一下,
------解决方案--------------------
##LoggedUser
两个“#”号就代表全局临时表,如果“#”号是一个就代表当前连接下的私有临时表;
我在网上找了个代码示例如下
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
可我不太理解怎样建立全局临时表,就是关于红色代码的地方,请各位前辈能给解释一下,
------解决方案--------------------
##LoggedUser
两个“#”号就代表全局临时表,如果“#”号是一个就代表当前连接下的私有临时表;