我有一个与 mysql 数据库通信的 vb 应用程序。当用户登录时,这会在“LoginLog”表中创建一个新行。
例如:
id user datein lastactive dateout computer
1 brian 2013-01-01 12:11 NULL NULL br-Office
当 brian 关闭应用程序时,一些代码将查找最后一个 brian 条目,其中 null 作为 dateout,br-Office 作为计算机,并使用dateout=Now()
.
(“计算机”很重要,因为用户可以从一台 PC 登录,在不注销的情况下放弃它,然后使用另一台 PC 登录,因此分离实例很重要。)
'Last active' 目前没有使用,我将让它存储用户执行的最后一个活动的时间,所以我可以找出用户是否有 5 分钟或更长时间没有处于活动状态。
我想知道我可以在应用程序中使用什么 SQL 来查找当前在线的用户列表。我可以只搜索具有空 dateout 的不同用户,但是有些用户只是关闭了他们的 PC,否则他们会崩溃,因此不会捕获 dateout 时间。因此,我想要一个限制,例如 dateout null,但 datein 小于 24 小时前。
我还希望能够通过应用程序中的一些 SQL 一次找出最多的在线用户。我会指出,我无法Set @variable;
有效地使用,因为应用程序一次只能通过 ADO/ODBC 执行一条语句。如果我单独运行语句,则不会记住从一个语句到下一个语句的变量。我必须运行 select 语句来返回值以分配为应用程序中的变量,并且应用程序的变量用于形成下一个查询。我也无法通过应用程序执行存储过程。那么它可能是选择语句的蛮力吗?