gpt4 book ai didi

c# - mysql + .NET 连接器 : "Column ' CharacterID' cannot be null"

转载 作者:行者123 更新时间:2023-11-29 13:50:40 26 4
gpt4 key购买 nike

我正在尝试使用 .NET 连接器将一些数据插入到我的 MySql 数据库中。

我的存储过程如下:

CREATE PROCEDURE `spr_StoreMoveData2`(IN `@characterID` INT, IN `@moveName` VARCHAR(1000), IN `@validBlocks` VARCHAR(50), IN `@damage` VARCHAR(500), IN `@stun` VARCHAR(500), IN `@cancelAbility` VARCHAR(50), IN `@framesStartup` VARCHAR(500), IN `@framesActive` VARCHAR(500), IN `@framesRecovery` VARCHAR(500), IN `@framesAdvOnHit` VARCHAR(500), IN `@framesAdvOnBlock` VARCHAR(500), IN `@additionalNotes` VARCHAR(5000))
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT 'test'
BEGIN
INSERT INTO movedata
(characterid, movename, validblocks, damage, stun, supermetergain,cancelability, framesStartup, framesActive, framesRecovery, framesAdvOnHit, framesAdvOnBlock, AdditionalNotes)
VALUES
(@characterID, @moveName, @validBlocks, @damage, @stun, @superMeterGain, @cancelAbility, @framesStartup, @framesActive, @framesRecovery, @framesAdvOnHit, @framesAdvOnBlock, @additionalNotes);
END

这看起来保存得很好。

我的.NET代码如下:

 using (MySqlConnection conn = new MySqlConnection())
{
conn.ConnectionString = ConfigurationManager.AppSettings["connectionString"].ToString();
conn.Open();

MoveData move1 = lmd[0];

MySqlCommand cmd = new MySqlCommand("spr_StoreMoveData", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("CharacterID", move1.CharacterID);
cmd.Parameters.AddWithValue("movename", move1.MoveName);
cmd.Parameters.AddWithValue("validblocks", move1.ValidBlocks);
cmd.Parameters.AddWithValue("damage", move1.Damage);
cmd.Parameters.AddWithValue("stun", move1.Stun);
cmd.Parameters.AddWithValue("supermetergain", move1.SuperMeterGain);
cmd.Parameters.AddWithValue("cancelability", move1.CancelAbility);
cmd.Parameters.AddWithValue("framesstartup", move1.Frames_Startup);
cmd.Parameters.AddWithValue("framesactive", move1.Frames_Active);
cmd.Parameters.AddWithValue("framesrecovery", move1.Frames_Recovery);
cmd.Parameters.AddWithValue("framesAdvOnHit", move1.Frames_AdvantageOnHit);
cmd.Parameters.AddWithValue("framesAdvOnBlock", move1.Frames_AdvantageOnBlock);
cmd.Parameters.AddWithValue("additionalNotes", move1.AdditionalNotes);

cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = null;
}

如果我使用这个,或者如果我使用以下测试查询

call spr_StoreMoveData (1, '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1')

出现错误“列'CharacterID'不能为空”。我将列设置为允许空值,并且将插入包含所有空值的行。我有点困惑。

我尝试查看网络上的所有答案,但我似乎遗漏了一些语法的微妙之处。有人可以帮忙吗?

最佳答案

您的语句使用@superMeterGain,您的过程没有将其作为参数。因此,您正在设置和使用您的程序不知道的参数。将其添加到存储过程的参数列表中,它应该可以工作。

关于c# - mysql + .NET 连接器 : "Column ' CharacterID' cannot be null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725168/

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