gpt4 book ai didi

C# - 无法更新 mysql 数据库列值

转载 作者:行者123 更新时间:2023-11-30 22:44:00 24 4
gpt4 key购买 nike

我在更新 MySQL 数据库中的 onlinestatus 列时遇到问题。我制作了一张图片,展示了我想要实现的目标以及数据库的外观(请原谅我的 Paint 技能,呵呵)。

enter image description here

这是我使用的代码:

string connString = "Server=localhost;Port=3306;Database=rookstat;Uid=XXXXXX;password=XXXXX;";
using (var connection = new MySqlConnection(connString))
{
connection.Open();
using (var command = new MySqlCommand())
{
command.Connection = connection;

command.CommandText = @"
UPDATE rookstayers SET level = 0 WHERE name = @name;
UPDATE rookstayers SET onlinestatus = 0;
DELETE FROM rookstayers WHERE name = @name;
INSERT INTO rookstayers (name, sex, vocation, level, achievements, world, lastlogin, accountstatus, onlinestatus) VALUES (@name, @sex, @vocation, @level, @achievements, @world, @lastLogin, @accountstatus, @onlinestatus);
";
command.Prepare();

foreach (var rooker in Players)
{
command.Parameters.Clear();
command.Parameters.AddWithValue("@name", rooker.Name);
command.Parameters.AddWithValue("@sex", rooker.Sex);
command.Parameters.AddWithValue("@vocation", rooker.Vocation);
command.Parameters.AddWithValue("@level", rooker.Level);
command.Parameters.AddWithValue("@achievements", rooker.Achievements);
command.Parameters.AddWithValue("@world", rooker.World);
command.Parameters.AddWithValue("@lastLogin", rooker.LastLogin);
command.Parameters.AddWithValue("@accountstatus", rooker.AccountStatus);
command.Parameters.AddWithValue("@onlinestatus", rooker.OnlineStatus);
command.ExecuteNonQuery();
}

Players.Clear();
}
connection.Close();
}

所以我基本上希望它清除关卡和在线状态,删除现有行,插入玩家。

注意:名称在我的应用程序中始终是唯一的

注意 2:如果我删除 UPDATE rookstayers SET onlinestatus = 0; 行,它会添加所有玩家并为他们提供应有的在线状态 1。但是这个应用程序是一个游戏的 cronjob,每 30 分钟刷新一次。如果玩家在游戏中注销,这会导致问题。他们的在线值保持在 1。这就是为什么我想在插入之前将数据库中的所有玩家设置为在线状态 0(离线)。然后插入它们。因为我插入的所有玩家都是从在线列表中取出的,也就是说他们在线。

最佳答案

哦。我想我明白发生了什么。你的 C# 代码正在迭代你的玩家“集合”中的每个新手。每次执行此操作时,您都会运行 4 个查询。这 4 个查询之一是更新表中的每条记录,以便在线状态为零,包括您到目前为止插入的所有记录。所以只有最后插入的记录在线状态为1,其他的都更新为0。(重复。这样效率很低。)

关于C# - 无法更新 mysql 数据库列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196654/

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