|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。server|一时表|反复
在我们开辟商务软件的时分,经常会碰到如许的一个成绩:如何避免用户反复登录我们的体系?出格是关于银行或是财政部门,更是要限定用户以其工号身份屡次登进。
大概会有人说在用户信息表中加一字段判别用户工号登录的形态,登录后写1,加入时写0,且登录时判别其标记位是不是为1,如是则不让该用户工号登录。可是如许那必将会带来新的成绩:如产生象断电之类不成预知的征象,体系长短一般加入,没法将标记地位为0,那末下次以该用户工号登录则不成登进,这该怎样办呢?
也许我们能够换一下思绪:有甚么器材是在connection断开后能够被体系主动接纳的呢?对了,SQLServer的一时表具有这个特征!可是我们这里的这类情形不克不及用部分一时表,由于部分一时表关于每个connection来讲都是一个自力的工具,因而只能用全局一时表来到达我们的目标。
好了,情形已开阔爽朗话了,我们能够写一个象上面如许复杂的存储历程:
createproceduregp_findtemptable--2001/10/2621:36zhuzhichaoinnanjing
/*寻觅以操纵员工号定名的全局一时表
*如无则将out参数置为0并创立该表,若有则将out参数置为1
*在connection断开毗连后,全局一时表会被SQLServer主动接纳
*如产生断电之类的不测,全局一时表固然还存在于tempdb中,可是已得到活性
*用object_id函数往判别时会以为其不存在.
*/
@v_useridvarchar(6),--操纵员工号
@i_outintout--输入参数0:没有登录1:已登录
as
declare@v_sqlvarchar(100)
ifobject_id(tempdb.dbo.##+@v_userid)isnull
begin
set@v_sql=createtable##+@v_userid+(useridvarchar(6))
exec(@v_sql)
set@i_out=0
end
else
set@i_out=1
在这个过程当中,我们看到假如以用户工号定名的全局一时表不存在时历程会往创立一张并把out参数置为0,假如已存在则将out参数置为1。
如许,我们在我们的使用程序中挪用该历程时,假如获得的out参数为1时,我们能够绝不客套地跳出一个message告知用户说”对不起,此工号正被利用!”
(测试情况:服务器:winntserver4.0SQLServer7.0事情站:winntworkstation)
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏: |
|