내 데이터가 내 데이터베이스에 저장되지 않습니다. '제품이 추가되었습니다'로 이동하는 대신 '제품 ID가 이미 존재합니다'로 이동합니다.C# - 데이터가 내 데이터베이스에 저장되지 않습니다
private void btnAddProduct_Click(object sender, EventArgs e)
{
if(txtNewProductID.Text == "" || txtNewProductName.Text == "" || txtNewProductPrice.Text == "" || cboNewProductCategory.Text == "")
{
MessageBox.Show("Please fill up the form!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
int prodQty = Convert.ToInt32(txtNewProductQuantity.Text);
decimal prodPrice = Convert.ToDecimal(txtNewProductPrice.Text);
if (!myData.AddProducts(txtNewProductID.Text, txtNewProductName.Text, prodQty, prodPrice, cboNewProductCategory.Text))
{
MessageBox.Show("Product has been added!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (MessageBox.Show("Product ID already exist", "Message", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning) == DialogResult.Retry)
{
txtNewProductID.Clear();
txtNewProductName.Clear();
txtNewProductPrice.Clear();
txtNewProductQuantity.Clear();
}
}
}
}
이 내 클래스 라이브러리에서 코드입니다 :
public bool AddProducts(string productID, string productName, int productQuantity, decimal productPrice, string productCategory)
{
bool recordFound = false;
myCon.Open();
try
{
SqlCommand saveProduct = new SqlCommand("AddProduct", myCon);
saveProduct.CommandType = CommandType.StoredProcedure;
saveProduct.Parameters.Add("@ProductID", SqlDbType.NVarChar).Value = productID;
saveProduct.Parameters.Add("@ProductName", SqlDbType.VarChar).Value = productName;
saveProduct.Parameters.Add("@ProductName", SqlDbType.Int).Value = productQuantity;
saveProduct.Parameters.Add("@ProductPrice", SqlDbType.Decimal).Value = productPrice;
saveProduct.Parameters.Add("@ProductCategory", SqlDbType.NVarChar).Value = productCategory;
saveProduct.ExecuteNonQuery();
myCon.Close();
}
catch
{
myCon.Close();
recordFound = true;
}
return recordFound;
}
가 그리고 이것은 내 저장 프로 시저에서이다 : 그것은 잘못 아무것도
CREATE PROCEDURE [dbo].[AddProduct]
@ProductID nvarchar(50),
@ProductName varchar(50),
@ProductQuantity int,
@ProductPrice decimal(18,2),
@ProductCategory nvarchar(50)
AS
INSERT INTO ProductsTbl
VALUES (@ProductID, @ProductName, @ProductQuantity, @ProductPrice, @ProductCategory)
RETURN 0
거기에 여기 코드는? 연결을 닫습니다 Catch
를 사용하지 않는, 그런데
saveProduct.Parameters.Add("@ProductName", SqlDbType.VarChar).Value = productName;
saveProduct.Parameters.Add("@ProductQuantity", SqlDbType.Int).Value = productQuantity;
:
saveProduct.Parameters.Add("@ProductName", SqlDbType.VarChar).Value = productName;
saveProduct.Parameters.Add("@ProductName", SqlDbType.Int).Value = productQuantity;
가 대신이어야합니다 :
참고 : 지금처럼 예외를 삼가 지 마십시오! –
@TimSchmelter의 대답에 설명 된 것처럼이 오류는 오타입니다. –