【发布时间】:2019-06-21 06:24:58
【问题描述】:
using MySql.Data.MySqlClient;
using System.Data;
public String connectionString = @"server=localhost;port=3306;user id=root;database=Product;persistsecurityinfo=True;password=xxxxxx@;";
protected void btnInsert_Click(object sender, EventArgs e)
{
MySqlConnection mySqlCon = new MySqlConnection(connectionString);
try
{
using (mySqlCon)
{
mySqlCon.Open();
MySqlCommand mySqlCmd = new MySqlCommand("Proc_Store_Products", mySqlCon);
mySqlCmd.CommandType = CommandType.StoredProcedure;
mySqlCmd.Parameters.AddWithValue("_productId", Convert.ToInt32(hfProductID.Value == "" ? "0" : hfProductID.Value));
mySqlCmd.Parameters.AddWithValue("_productCode", txtproductCode.Text.Trim());
mySqlCmd.Parameters.AddWithValue("_productName", txtproductName.Text.Trim());
mySqlCmd.Parameters.AddWithValue("_price", Convert.ToDecimal(txtprice.Text.Trim()));
mySqlCmd.Parameters.AddWithValue("_description", txtdescription.Text.Trim());
mySqlCmd.ExecuteNonQuery();
clear();
lblSuccessMsg.Text = "Submitted Successfully";
}
}
catch (Exception ex)
{
lblErrorMsg.Text = ex.Message;
}
这是SP代码
DELIMITER $$
CREATE DEFINER=root@localhost PROCEDURE Proc_Store_Products(
_productId int,
_productCode varchar(20),
_productName varchar(40),
_price decimal(18,2),
_stock int,
_description varchar(200)
) BEGIN
IF _productId = 0 then
INSERT INTO productInfo(productCode,productName,price,stock,description)
VALUES(_productCode,_productName,_price,_stock,_description);
else
UPDATE productInfo
SET
productCode = _productCode,
productName = _productName,
price = _price,
stock = _stock,
description = _description
WHERE
productId = _productId;
END IF;
END$$ DELIMITER ;
【问题讨论】:
-
据我所知,这里没有任何问题。你能显示存储过程的代码吗?你确定没有显示错误吗?您是否使用调试器遵循代码流程?
-
是..没有错误..下面是存储过程
-
您好,欢迎您!请阅读how-to-ask page 和How to create a Minimal, Complete, and Verifiable example 以改进您的问题并帮助我们了解您的问题。
-
好吧,SP 中有 6 个参数,但您只传递了 5 个参数。股票值的参数在哪里?当您尝试执行此代码时,您没有任何类型的错误,这似乎很奇怪。如前所述,我真的建议使用调试器跟踪您的代码。有些事情不像看起来那样
-
旁注:edit您的问题以添加信息。请勿发布 ANSWER 以添加 SP 代码。