将数据从 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 ;
这是我正在使用的代码:
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 ;