gpt4 book ai didi

C# Mysql 客户端服务器应用程序。如何管理在线用户?

转载 作者:行者123 更新时间:2023-11-29 21:50:31 26 4
gpt4 key购买 nike

所以我有一个可以在多个客户端上运行的应用程序,每个客户端都访问中央服务器以获取数据。在客户端应用程序上,用户需要使用其凭据登录才能访问该程序。我将在线用户存储在数据库的表中。我目前管理在线用户的方法如下:

用户登录并将其记录插入到数据库的在线表中

MySqlConnection connection1 = new MySqlConnection(Class1.connString);
MySqlCommand command = connection1.CreateCommand();

command.CommandText = "INSERT INTO online (ComputerIP, ComputerName, Username, Time) " + "VALUES (@ip, @compname, @user, @datetime)";

command.Parameters.AddWithValue("@ip", getIP().NullString());
command.Parameters.AddWithValue("@compname", GetFQDN().NullString());
command.Parameters.AddWithValue("@user", user);
command.Parameters.AddWithValue("@datetime", DateTime.Now);

connection1.Open();
command.ExecuteNonQuery();
connection1.Close();

一旦他们注销或退出应用程序,就会运行代码以从表中删除此记录。

MySqlConnection conn = new MySqlConnection(Class1.connString);
conn.Open();

MySqlCommand command = new MySqlCommand("DELETE FROM online WHERE ID='" + userID + "'", conn);

MySqlDataReader Reader1 = command.ExecuteReader();

conn.Close();

但是,如果用户错误地关闭程序(结束任务、强制关闭计算机、断电),则不会执行删除此记录的代码,因此尽管未登录,但用户仍保持登录状态上。

我该如何应对这些情况?我的方法是否实用或者是否有更好的解决方案?

最佳答案

我不知道如何解决它,但也许你应该解释一下你想要实现的目标是什么?如果您只想知道当前登录的用户,您可以从 INFORMATION_SCHEMA.PROCESSLIST View 中获取您需要的信息吗?当连接因任何原因关闭时,这应该更新。

关于C# Mysql 客户端服务器应用程序。如何管理在线用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33692921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com