如何显示出在线用户?

fanzs007 2010-03-28 06:31:09
如何显示出在线用户?

(可以在用户表新增一个状态字段,登陆后设为1,关闭主窗口为0
?)
可是如何控制右键状态栏的关闭?或者alt+f4?


我想只要是打开程序就状态设为1,只要是关闭程序就为0或者有什么好的方法


能提供一个思路?
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
winwhere 2010-03-30
  • 打赏
  • 举报
回复
能否从数据库的存储过程中找答案?
zlf19810306 2010-03-30
  • 打赏
  • 举报
回复
偶公司做过这样的东东,基本上是有一张表存储登陆的用户,当用户登陆并且通过验证,成功进入系统,就将用户id插入到这张表中。用户正常退出的时候把这个用户的id删除。这样做有一个问题就是如果是非正常退出时就比较麻烦(偶公司设置的是同一个用户id不能同时在两个客户端登陆)。偶公司的解决办法是给管理员一个权限,如果遇到非正常退出导致无法登陆系统。由管理员从管理员的特定界面操作把用户id从存储登陆用户的表中删除!
winwhere 2010-03-29
  • 打赏
  • 举报
回复
这个我也想知道,不知道数据库是否提供这种功能!
duzhy 2010-03-29
  • 打赏
  • 举报
回复
登录数据库的用户名和系统登录的用户名是不一样的。我也想知道登录系统的用户情况。
提前十分钟 2010-03-29
  • 打赏
  • 举报
回复
数据库端应该有存储过程检查哪些客户端已经连接上数据库服务器
dahaidao 2010-03-29
  • 打赏
  • 举报
回复
看来是个比较麻烦的事。

正常情况下,处理起来比较方便,登录就记个状态,表示已经在线了,退出就把这个状态置成不在线。

处理异常情况,这个需要你自己定规则。
wag_enu 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 new4everlau 的回复:]
顶!我也不太明白那些通过PB除了调用SOCK外事如何显示在线用户的,很想了解;
如程序例外关闭;网络出现问题掉线等非正常关闭情况;3
顶!
[/Quote]

参考一下这贴:
http://topic.csdn.net/u/20090924/11/1404ceab-fed6-4c35-9f09-ed55c0f5435e.html
fanzs007 2010-03-29
  • 打赏
  • 举报
回复
还是用(王震宇)的
登陆时间和上次使用时间差来判断。。

简单
winwhere 2010-03-29
  • 打赏
  • 举报
回复
我想,还可以通过数据库服务器,转发消息、传文件,而不用到winsock,就是利用数据库自身,能否做到?
jimwoo 2010-03-29
  • 打赏
  • 举报
回复
select * from  master.dbo.sysprocesses where spid >= 0 and spid <= 32767
new4everlau 2010-03-29
  • 打赏
  • 举报
回复
顶!我也不太明白那些通过PB除了调用SOCK外事如何显示在线用户的,很想了解;
如程序例外关闭;网络出现问题掉线等非正常关闭情况;3
顶!
pb_tjb 2010-03-29
  • 打赏
  • 举报
回复
呵呵,本人以為最好的辦法就是使用通信功能.
使用通信功能從服務器獲得登錄資料庫密碼,並時時監控在線情況,可從服務器端隨意踢出客戶端.
本人已基本實現此功能,但是.....呵呵
QQ:475693560
fanzs007 2010-03-29
  • 打赏
  • 举报
回复
回复于:2009-09-26 15:16:02C/C++ code
试一下这个方法:

在登录成功以后,立即创建临时表,用动态SQL 1,如:
int ii_uid
....获取登录用户ID
string is_sql
is_sql = "create table ##tab_"+string(ii_uid)+"(a int)"
EXECUTE IMMEDIATE :is_sql using sqlca;

检测时,用嵌入式SQL,如:
int ii_uid
.... //先获取欲登录的用户登录ID: ii_uid
long il_ret
string is_db

is_db = "tempdb..##tab_"+string(ii_uid)

select object_id(:is_db) into :il_ret from 任意存在的表名 using sqlca;
//

if not isnull(il_ret) then
messagebox(string(il_ret),"该用户已经登录!")
return
end if

其中

select object_id(:is_db) into :il_ret from 任意存在的表名 using sqlca;
//提示无效列名

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧