使用MySQL UPDATE查询的C#异常

时间:2017-01-20 17:22:41

标签: c# mysql exception error-handling

最近,我一直在为我玩的游戏制作一个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);
        }
    }
  

了解变量的有用信息:

  • MDiscipline.Instance.Configuration.Instance.PlayerInfoTableName可以翻译为" player_info"。
  • steamid或(@steamId)可以转换为32个字符编号。
  • characterName或(@characterName)可以转换为1到30个字符之间的任何值。
  • ip或(@ip)可以转换为字符串中的IP地址,例如" 255.255.255.255"。
  • MDiscipline.Instance.Configuration.Instance.Instance或(@lastServer)可以转换为Server01。

0 个答案:

没有答案