[英]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.