微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 MySQL 存储过程中出现错误:cmd.ExecuteNonQuery()

如何解决我的 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;
  1. ,请注意我如何将CommandTypefrom更改CommandType.StoredProcedureCommandType.Text
  2. 是正文。而不是仅仅调用存储的过程名称。我编写了调用存储过程的整个命令。从:cmd.CommandText = "sp_ProductAdjustment"; 到:cmd.CommandText = "call sp_ProductAdjustment(@product_code, @adjusted_qty, @stock_in_out, @status)";
  3. ,我在里面命名了我自己的参数sp_ProductAdjustment(parameters here)
  4. ,我不知道为什么在线教程对我不起作用,但幸运的是我仍然找到了正确的解决方案。

解决方法

  1. 我在这里有我的存储过程“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
  1. 然后我的 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();
            }
        }
  1. 我的代码调用 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");
}
  1. 然后我的错误:System.NotSupportedException:’.Net Framework 不支持字符集’utf8mb3’。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。