繁体   English   中英

将数据从 vb.net web 表单保存到 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 ;

如果我单击执行 sub 的按钮,db 中的字段将变为空值,但如果我取消注释查询行并使用 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 ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM