将数据从 vb.net 网络表单保存到 mysql 适用于代码中明确说明的查询,但不适用于存储过程

Saving data from a vb.net web form to mysql works with query explicitly stated in code, but not with stored procedure

这是我正在使用的代码:

Protected Sub IZMJENA_TEMP()
    'Dim cmd As New MySqlCommand("update t_kontrole set min_temp = @min_tempy, max_temp = @max_tempy where lokacija = 'plastenik'", conn)'
    Dim cmd As New MySqlCommand("sp_izmjena_temp", conn)
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("@min_tempy", MySqlDbType.Float).Value = min_temp_tb.Text
    cmd.Parameters.Add("@max_tempy", MySqlDbType.Float).Value = max_temp_tb.Text

    conn.Open()
    cmd.ExecuteNonQuery()
    conn.Close()

End Sub

这是存储过程:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_izmjena_temp`(IN `@min_tempy` float, IN `@max_tempy` float)
BEGIN
update t_kontrole set min_temp = @min_tempy, max_temp = @max_tempy where lokacija = 'plastenik';
end$$
DELIMITER ;

如果我单击按钮执行子程序,数据库中的字段将变为空值,但如果我取消注释带有查询的行并注释带有 sp 的行,数据将正确保存。

我哪里弄错了?

谢谢。

我想我应该从参数名称中删除 @ 开始:

Protected Sub IZMJENA_TEMP()
    Dim cmd As New MySqlCommand("sp_izmjena_temp", conn)
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("min_tempy", MySqlDbType.Float).Value = Convert.ToSingle(min_temp_tb.Text)
    cmd.Parameters.Add("max_tempy", MySqlDbType.Float).Value = Convert.ToSingle(max_temp_tb.Text)

    conn.Open()
    cmd.ExecuteNonQuery()
    conn.Close()

End Sub

这是存储过程:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_izmjena_temp`(IN min_tempy float, IN max_tempy float)
BEGIN
update t_kontrole set min_temp = min_tempy, max_temp = max_tempy where lokacija = 'plastenik';
end$$
DELIMITER ;