SQLSERVER中全局临时表:是由“##”(即两个连续的“#”号)为前缀的;
UserID:是内存变量;以下假设UserID值为“001”
ID:是用户自定义的字段别名;这条语句执行完返回的结果应该是:一个OBJECT_ID,即当前数据库中表名为“##LoginUser001”的对象的ID;
UserID:是内存变量;以下假设UserID值为“001”
ID:是用户自定义的字段别名;这条语句执行完返回的结果应该是:一个OBJECT_ID,即当前数据库中表名为“##LoginUser001”的对象的ID;
Function UserLoginRegister(UserID As String) As Boolean
'创建登录标识(即创建用户名对应的临时表)
UserID = txtUserName.text
Dim cnn As Object
Set cnn = CreateObject("ADODB.Connection")
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xskf;Data Source=."
cnn.Execute "Create TABLE ##LoggedUser" & UserID & "(userid varchar(1))"End Function
为什么在 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.1;Persist Security Info=False;User ID=sa;Initial Catalog=xskf;Data Source=."
Set rst = cnn.Execute("Select OBJECT_ID('##LoggedUser" & UserID & "') AS ID")
If Not IsNull(rst!ID) Then
IsLogged = True
End If
rst.Close
End Function
执行后结果返回已经创建了一'##LoggedUser" & UserID & "'临时表,可在判断指定用户是否登录在中判断rst!ID为什么还是空呢,请教我该怎么改呢?
Function UserLoginRegister(UserID As String) As Boolean
'创建登录标识(即创建用户名对应的临时表)
UserID = txtUserName.Text
Dim cnn As Object
Set cnn = CreateObject("ADODB.Connection")
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xskf;Data Source=."
cnn.Execute "Create TABLE ##LoggedUser" & UserID & "(userid varchar(1))"End Function
'为什么在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.1;Persist Security Info=False;User ID=sa;Initial Catalog=tempdb;Data Source=."
Set rst = cnn.Execute("Select OBJECT_ID('##LoggedUser" & UserID & "') AS ID")
If Not IsNull(rst!ID) Then
IsLogged = True
End If
rst.Close
End Function
'执行后结果返回已经创建了一 '##LoggedUser" & UserID & "'临时表,可在判断指定用户是否登录在中判断rst!ID为什么还是空呢,请教我该怎么改呢?
登录代码如下,请问有什么问题吗
Private Sub 登录_Click() If IsLogged(txtUserName) Then
MsgBox "此用户已登录!"
Else
,以下是验证用户名和密码的过程
rs2.Open "select * from tb_power where 操作员='" + txtUserName.text + "'and 密码='" + ID + "'", cnn, adOpenStatic
If rs2.RecordCount > 0 The
Load MDIForm1
Unload Me
UserLoginRegister Me.txtUserName'这个应该调用是创建以用户名为临时表的过程
End If
rs2.Close
End IfEnd Sub
其实这种临时表“前缀为##号”,在连接未关闭时是一直会存在的。
比如:
假设有三个客户端以“管理员”用户连接某个数据库后,只要这三个客户端的任意一个客户端创建过“##LoginUser管理员”这个表,那么在他们三个均未断开连接时,这个表“##LoginUser管理员”还是会存在的。
只有当这三个客户端都断开与该数据库的连接以后,表“##LoginUser管理员”才会被SQLSERVER服务自动删除;