C/S数据库怎样锁定记录(100分)

  • 主题发起人 主题发起人 xhmeng
  • 开始时间 开始时间
X

xhmeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一应用,自己设置了一张用户登陆表,包括用户名、口令等,
怎样控制一个用户只能同时登录一次?要考率Down机等情况容错。
 
可以用一个字段标记
另外c/s间用socket,这样一当机或退出,服务器端就可以得到信息
 
这样做服务端客户端都要编程,太麻烦了
数据库内部不能实现这样的功能吗?
 
那你的登陆表应该变成开设不同的账户,然后看看你用的数据库提供不提供
类似的功能了,用登陆表的话,肯定不行.
 
yifeng,原来你还没走。
怎么不把ICQ打开??
 
hehe,原来你也没走.......
 
xhmeng,你用什么SERVER呢?
程序登陆进来后,你可以将用户登陆表中该登陆用户设一登陆与否的标志

如果你用SQL SERVER或SYBASE
可以在 master库里找到隐含的系统表(sql explorer 里用view systemdata)
dbo.sysprocesses
里面记录着各机器的网卡地址,如果某机器DOWN机,此表会自动更新
你的机器重新启动后,再登陆时判断此表中是否有本机网卡号就可以了
 
我用的是Interbase

>如果你用SQL SERVER或SYBASE
>可以在 master库里找到隐含的系统表(sql explorer 里用view systemdata)
>dbo.sysprocesses
>里面记录着各机器的网卡地址,如果某机器DOWN机,此表会自动更新
>你的机器重新启动后,再登陆时判断此表中是否有本机网卡号就可以了

再登录时,系统又自动将网卡地址加入,怎样判断?
 
在SQL SERVER里,如果CLIENT端DOWN掉, SERVER端也会更新 dbo.sysprocesses
是自动更新 。
 
有个注意:
ON userlogon
IF user.logoned then
if ping user then
userlogon.failed;
 
请继续讨论或结束此问题
 
你可以建一个临时表
temp(userid,password)
在登录数据库后,将其用户名,口令写入此表,在写入前查询此表有无此记录,若有就不行,若无就可将此用户名,口令写入此表并可运行此应用。在退出应用后,删除此用户名,口令的记录。
 
“在退出应用后,删除此用户名,口令的记录"

客户机Dwon机,由谁来删除记录?客户机立即开机能再登录吗?
 
如果新拥护登陆,发现有用户已经存在,就PING老用户
如果成功,则拒绝新用户
否则接受新用户,删除老用户,许多地方都是如此做的。
 
用sp_who来处理。
 
请继续讨论或结束问题
 
我的方法也不错:(
 
后退
顶部