临时表

来源:互联网 发布:法律论文怎么写 知乎 编辑:程序博客网 时间:2024/06/10 09:19

为了防止用户的重复登录,在一开始想到的一种方法:

在用户表中添加一个字段,登录后写1,退出后写0.这样子在用户登录进行检查的时候判断这个字段是否为0,如果是0那么就可以登录;但是这样子就又带来了新的问题,如果在用户正在登录的过程中突然断电,那么表中写入的是1,也就是说用户在以后的登录中都不能能够登录系统了。

另外一种方法:在SQL Server中建立全局临时表,如果用户没有登录就建立一个临时表来存放用户,如果已经登录那么就提醒用户此账号已经登录;临时表相比较上面一个方法的好处就在于:当系统与SQL Server数据库的连接断开以后,临时表是可以被系统自动收回的,这样子用户下次登录的时候会再次建立一个临时表并且可以登录成功!

依据第二种思路我们建立一个存储过程:

create proc PROC_FindTemptable /*     * 寻找以操作员工号命名的全局临时表   * 如无则将out参数置为0并创建该表,如有则将out参数置为1   * 在connection断开连接后,全局临时表会被SQL Server自动回收  * 如发生断电之类的意外,全局临时表虽然还存在于tempdb中,但是已经失去活性   * 用object_id函数去判断时会认为其不存在.*/@View_userID char(20),--输入参数  操作员账号@outResult int out --输出参数( 0:没有登录 1:已经登录)as declare @View_sql varchar(100)--object_id函数判断操作员账号不存在(没有的登录)if OBJECT_ID ('tempdb.dbo.##'+@View_userID )is nullbegin --创建临时表set @View_sql ='create table ##'+@View_userid+'(userid char(20))'exec(@View_sql)--out参数设置为0(账号没有登录)set @outResult =0end --账号存在else --out参数为1set @outResult =1--在这个过程中,我们看到如果以用户工号命名的全局临时表不存在时过程会去创建一张并把out参数置为0,如果已经存在则将out参数置为1。--这样,应用程序中调用该过程时,如果取得的out参数为1时,我们可以毫不客气地跳出一个message告诉用户说”对不起,此工号正被使用!”

在系统中调用存储过程来实现用户登录的代码:将与数据库的连接和执行存储过程写在一个函数中,然后在客户端调用即可!

 Public Function ExecuteProcTestID(ByVal strID As String, ByVal strProc As String) As Integer        Dim myConnection As New SqlConnection(CmdString) '定义连接        Dim Cmd As New SqlCommand  '表示SQL命令语句的执行        '连接数据库将存储名称和参数传递给cmd        Cmd.Connection = myConnection        '指明为存储过程        Cmd.CommandType = CommandType.StoredProcedure        Cmd.CommandText = strProc        Cmd.Parameters.Add("@View_userID", SqlDbType.VarChar, 20).Value = strID        Cmd.Parameters.Add("@outResult", SqlDbType.VarChar, 20).Direction = ParameterDirection.Output        Try            '执行存储过程            Cmd.ExecuteNonQuery()            Return Cmd.Parameters(1).Value()        Catch e As Exception            Return False        End Try    End Function

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇吃腊肉了怎么办 怀孕吃了午餐肉怎么办 剩米饭太硬怎么办? 月经推迟量少怎么办 怎么办早餐吃了1000 乐扣盒子打不开怎么办 不锈钢饭盒盖子打不开怎么办 电压力锅打不开盖子怎么办 保温饭盒打不开了怎么办 玻璃饭盒加热后打不开怎么办 玻璃饭盒盖子盖不紧怎么办 狗狗耳朵臭怎么办 白色洗手池发黄怎么办 热水壶木塞有味怎么办 过滤水壶效果不好怎么办 喝咖啡睡不着觉怎么办 食品流通许可证过期怎么办 水产养殖水体发白怎么办 生存战争找不到食物怎么办 执法记录仪肩扣怎么办 极米h1s死机了怎么办 受到伪基站骚扰怎么办 车载蓝牙没声音怎么办 工程现场更改方案怎么办 qq没有语音输入怎么办 执法记录仪丢了怎么办 vivox20无ip分配怎么办 x20无ip分配怎么办 手机ipv4不可用怎么办 ip地址不可用怎么办 lp地址配置错误怎么办 手机ip配置失败怎么办 wifi无ip分配怎么办 win10上传速度慢怎么办 三星s6图标变大怎么办 华为p9plus信号不好怎么办 手机wifi信号差怎么办? 华为wf信号不好怎么办 魅族打电话黑屏怎么办 魅族手机开不机怎么办 吃鸡服务器繁忙怎么办