最近,我一直在为我玩的游戏制作一个C#插件。我目前的问题是下面列出的查询产生了许多错误,例如这些错误:
MySql.Data.MySqlClient.MySqlException:对于列' lastServer'在第1行
^^此错误显示我的lastServer数据类型为varchar(10),但当我将其更改为varchar(25)时,它就消失了。但是我仍然想知道为什么会这样,如果有人能够弄明白的话。
我当前的错误是@lastServer,@ characterName和@ip显示为@lastServer,@ characterName和@ip而不是他们的" AddWithValue"值。
这里是用于表创建的查询:
command.CommandText = string.Concat("CREATE TABLE `", MDiscipline.Instance.Configuration.Instance.PlayerInfoTableName, "` (`steamId` varchar(32) NOT NULL,`characterName` varchar(40) NOT NULL,`ip` varchar(15) NOT NULL, `lastPunishment` tinyint(2) UNSIGNED NOT NULL,`lastServer` varchar(25) NOT NULL,`lastLogin` TIMESTAMP NOT NULL DEFAULT current_timestamp, PRIMARY KEY (`steamId`)) ");
以下是我遇到问题的代码:
public void UpdatePlayerInfo(string steamid, string characterName, string ip)
{
try
{
MySqlConnection connection = createConnection();
MySqlCommand command = connection.CreateCommand();
command.Parameters.AddWithValue("@steamId", steamid);
command.Parameters.AddWithValue("@characterName", characterName);
command.Parameters.AddWithValue("@ip", ip);
command.Parameters.AddWithValue("@lastServer", MDiscipline.Instance.Configuration.Instance.Instance);
command.CommandText = "UPDATE `" + MDiscipline.Instance.Configuration.Instance.PlayerInfoTableName + "` SET `characterName` = '@characterName', `ip` = '@ip', `lastServer` = '@lastServer', `lastLogin` = NOW() WHERE `steamId` = '" + steamid.ToString() + "';";
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
catch (Exception ex)
{
Logger.LogException(ex);
}
}
了解变量的有用信息: