![](/img/trans.png)
[英]Notify user once database value is changed by continuously polling in background
[英]How do i continuously update a value if it changed on the database
我正在尝试在WPF应用程序中实现当前登录用户的状态。 我可以从数据库中读取并设置一次该值,但是我需要它来保持更新。 因此,例如,当用户在线时,他变为忙。 该值将在线,但是一旦它在数据库上更改为busy,该值也将更新为busy。
例如:
connection = new MySqlConnection(connectionString);
Query = "SELECT status FROM Accounts WHERE username=@username";
connection = new MySqlConnection(connectionString);
MySqlCommand command = new MySqlCommand(Query, connection);
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@username", thedesiredusername);
connection.Open();
MySqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
string userstatus = dataReader.GetString("status");
}
这将设置一次userstatus值。 我该如何做这样的事情:
connection = new MySqlConnection(connectionString);
Query = "SELECT status FROM Accounts WHERE username=@username";
connection = new MySqlConnection(connectionString);
MySqlCommand command = new MySqlCommand(Query, connection);
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@username", thedesiredusername);
connection.Open();
MySqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
//keep doing:
if (userstatus != dataReader.GetString("status"))
{
string userstatus = dataReader.GetString("status");
}
}
提前致谢!
如果您可以确定登录状态何时会更改,或者可以确定便于检查的事件(页面加载),则事件驱动模型通常会更高效。 如果您没有这种奢侈的感觉,那么您将每隔如此频繁地轮询数据库以查看状态是否已更改。 考虑将过滤器添加到数据库查询而不是客户端代码。
通常,数据库查询是轮询检查中最昂贵的部分。 试图通过检查新获取的内容是否与上次检查相匹配来节省几个处理周期,这并不能提供任何形式的性能提升。
我现在正在使用Devart.Data.MySql包。 这正是我需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.