如何解决我的 MySQL 存储过程中出现错误:cmd.ExecuteNonQuery()
我只是在尝试任何事情,直到我得到调用存储过程的正确解决方案。这是我的建议:
cmd.Connection = conn;
cmd.CommandText = "call sp_ProductAdjustment(@product_code, @adjusted_qty, @stock_in_out, @status)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@product_code", MysqLDbType.VarChar).Value = prodcode;
cmd.Parameters["@product_code"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@adjusted_qty", MysqLDbType.Int32).Value = qty;
cmd.Parameters["@adjusted_qty"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@stock_in_out", MysqLDbType.VarChar).Value = in_out;
cmd.Parameters["@stock_in_out"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("@status", MysqLDbType.VarChar).Value = status;
cmd.Parameters["@status"].Direction = ParameterDirection.Input;
-
,请注意我如何将
CommandType
from更改CommandType.StoredProcedure
为CommandType.Text
-
是正文。而不是仅仅调用存储的过程名称。我编写了调用存储过程的整个命令。从:
cmd.CommandText = "sp_ProductAdjustment";
到:cmd.CommandText = "call sp_ProductAdjustment(@product_code, @adjusted_qty, @stock_in_out, @status)";
-
,我在里面命名了我自己的参数
sp_ProductAdjustment(parameters here)
- ,我不知道为什么在线教程对我不起作用,但幸运的是我仍然找到了正确的解决方案。
解决方法
- 我在这里有我的存储过程“sp_ProductAdjustment”
CREATE PROCEDURE sp_ProductAdjustment
(IN `_product_code` varchar(35),IN `_adjusted_qty` int,IN `_stock_in_out` char(3),IN `_status` varchar(10))
BEGIN
***some codes here***
END
- 然后我的 C# 代码调用我存储的过程
public bool ProductAdjustment(string prodcode,int qty,string in_out,string status)
{
conn = Database.getConnection();
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "sp_ProductAdjustment";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("_product_code",MySqlDbType.VarChar).Value = prodcode;
cmd.Parameters["_product_code"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("_adjusted_qty",MySqlDbType.Int32).Value = qty;
cmd.Parameters["_adjusted_qty"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("_stock_in_out",MySqlDbType.VarChar).Value = in_out;
cmd.Parameters["_stock_in_out"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("_status",MySqlDbType.VarChar).Value = status;
cmd.Parameters["_status"].Direction = ParameterDirection.Input;
if (cmd.ExecuteNonQuery() == 1) **error on this line**
{
return true;
}
else
{
return false;
}
}catch(MySqlException ex)
{
MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message);
return false;
}
finally
{
conn.Close();
}
}
- 我的代码调用 ProductAdjustment() 方法
string in_out = radioButton1.Checked ? "IN" : "OUT";
if (prod.ProductAdjustment(txtproductCode.Text,Convert.ToInt32(numericUpDown_adjust.Value.ToString()),in_out,comboBox_reasons.Text))
{
MessageBox.Show("Product Adjusted");
}
- 然后我的错误:System.NotSupportedException:’.Net Framework 不支持字符集’utf8mb3’。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。