C# 我想更新我的库存量,与以前的数量保持一致。
我想按照以前的库存状态更新我的库存数量。我需要更新以前的数据,根据向内或向外的交易增加或减少数据。我没有在currentstock表中更新库存。 //这是问题部分的开始C# 我想更新我的库存量,与以前的数量保持一致。,c#,sql,.net,logic,inventory-management,C#,Sql,.net,Logic,Inventory Management,我想按照以前的库存状态更新我的库存数量。我需要更新以前的数据,根据向内或向外的交易增加或减少数据。我没有在currentstock表中更新库存。 //这是问题部分的开始 SqlCommand cmd2 = new SqlCommand("select stock from currentstock where itemname=@a", con); con.Open(); int x=0; cmd2.Parameters.AddWi
SqlCommand cmd2 = new SqlCommand("select stock from currentstock where itemname=@a", con);
con.Open();
int x=0;
cmd2.Parameters.AddWithValue("@a",comboBox2.SelectedItem.ToString());
SqlDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
x = dr.GetInt16(2);
}
if (radioButton1.Checked == true)
{
x = x + Convert.ToInt16(textBox1.Text);
}
else if (radioButton2.Checked == true)
{
x = x - Convert.ToInt16(textBox2.Text);
}
con.Close();
SqlCommand cmd1 = new SqlCommand("update currentstock set stock=@a where itemname=@b",con);
con.Open();
cmd1.Parameters.AddWithValue("@a", x);
cmd1.Parameters.AddWithValue("@b", comboBox2.SelectedItem.ToString());
cmd1.ExecuteNonQuery();
con.Close();
//这是问题部分的结尾首先,在与sql表对话时,请不要直接使用来自用户输入的值(请参阅)。使用存储过程
SqlCommand cmd2 = new SqlCommand("select stock from currentstock where itemname=@a", con);
con.Open();
int x=0;
cmd2.Parameters.AddWithValue("@a",comboBox2.SelectedItem.ToString());
SqlDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
x = dr.GetInt16(2);
}
if (radioButton1.Checked == true)
{
x = x + Convert.ToInt16(textBox1.Text);
}
else if (radioButton2.Checked == true)
{
x = x - Convert.ToInt16(textBox2.Text);
}
con.Close();
SqlCommand cmd1 = new SqlCommand("update currentstock set stock=@a where itemname=@b",con);
con.Open();
cmd1.Parameters.AddWithValue("@a", x);
cmd1.Parameters.AddWithValue("@b", comboBox2.SelectedItem.ToString());
cmd1.ExecuteNonQuery();
con.Close();
我希望您从组合框返回的值在表的itemname列中不是有效值。那么问题出在哪里?x=x+Convert.ToInt16(textBox1.Text);x=x-将.ToInt16转换为(textBox2.Text);我认为这两条语句没有得到执行。请解释您在哪一行上面临的问题,以及出现的错误或异常,预计将在currentstock表中进行更改,但即使在完成执行后,程序也不会反映数据库中的任何更改。您确定传递的值与表行中的值不同吗?它是一个有效值,并且正在调试的程序没有显示任何错误。组合框将返回一个字符串格式的值,并在SQL表中使用项名称作为nvarchar类型。。