Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL更新查询的C#异常_C#_Mysql_Exception_Error Handling - Fatal编程技术网

MySQL更新查询的C#异常

MySQL更新查询的C#异常,c#,mysql,exception,error-handling,C#,Mysql,Exception,Error Handling,最近,我一直在为我玩的游戏开发一个C#插件。我目前的问题是,下面列出的查询正在生成许多错误,例如以下错误: MySql.Data.MySqlClient.MySqlException:第1行“lastServer”列的数据太长 ^^此错误显示我的lastServer数据类型为varchar(10)时,但当我将其更改为varchar(25)时,它消失了。然而,我仍然想知道为什么会这样,如果有人能够弄明白的话 我当前的错误是@lastServer、@characterName和@ip显示为@las

最近,我一直在为我玩的游戏开发一个C#插件。我目前的问题是,下面列出的查询正在生成许多错误,例如以下错误:

MySql.Data.MySqlClient.MySqlException:第1行“lastServer”列的数据太长

^^此错误显示我的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\u info”
  • 可将steamid或(@steamid)转换为32个字符的数字
  • characterName或(@characterName)可以转换为1到30个字符之间的任何值
  • ip或(@ip)可以转换为字符串形式的ip地址,例如“255.255.255.255”
  • MDisClipline.Instance.Configuration.Instance.Instance或(@lastServer)可以转换为Server01

lastServer列的大小是多少?设置
characterName
='@characterName'`您告诉它将其保存为文字。当您说我“告诉它将其保存为文字”时,我将如何更正?不太熟悉更新查询,只是普通的插入、删除和选择查询。Ster.Stack可能@lastname超过8个字符?没有
@lastname
,但我可以通过将数据类型更改为varchar(25)来修复
@lastServer
。我觉得很有趣。但是,我现在在MySQL表中的@lastServer、
@characterName
@ip
显示为
@lastServer
@characterName
@ip
而不是它们的“AddWithValue”值时遇到了问题。