MySQL更新查询的C#异常
最近,我一直在为我玩的游戏开发一个C#插件。我目前的问题是,下面列出的查询正在生成许多错误,例如以下错误: MySql.Data.MySqlClient.MySqlException:第1行“lastServer”列的数据太长 ^^此错误显示我的lastServer数据类型为varchar(10)时,但当我将其更改为varchar(25)时,它消失了。然而,我仍然想知道为什么会这样,如果有人能够弄明白的话 我当前的错误是@lastServer、@characterName和@ip显示为@lastServer、@characterName和@ip,而不是它们的“AddWithValue”值 以下是用于创建表的查询: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
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
characterName
='@characterName'`您告诉它将其保存为文字。当您说我“告诉它将其保存为文字”时,我将如何更正?不太熟悉更新查询,只是普通的插入、删除和选择查询。Ster.Stack可能@lastname超过8个字符?没有@lastname
,但我可以通过将数据类型更改为varchar(25)来修复@lastServer
。我觉得很有趣。但是,我现在在MySQL表中的@lastServer、@characterName
和@ip
显示为@lastServer
、@characterName
和@ip
而不是它们的“AddWithValue”值时遇到了问题。