【问题标题】:I want to update my stock quantity keeping along the previous quantity.我想更新我的库存数量,保持之前的数量。
【发布时间】:2014-04-26 13:46:58
【问题描述】:

我想根据之前的库存状态更新我的库存数量。我需要根据向内或向外交易通过添加或减少它来更新以前的数据。我没有在 currentstock 表中更新库存。 //这是问题部分的开始

        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();

//问题段到此结束

【问题讨论】:

  • 那么问题出在哪里?
  • x = x + Convert.ToInt16(textBox1.Text); x = x - Convert.ToInt16(textBox2.Text);我认为这两个语句没有被执行。
  • 请说明您在哪一行遇到了什么问题,如果有什么错误或异常,
  • 预计将在 currentstock 表中进行更改,但即使在完全执行后程序也没有反映数据库中的任何更改。
  • 您确定传递的值与表行中的值不同

标签: c# sql .net logic inventory-management


【解决方案1】:

首先,在与您的 sql 表对话时,请不要直接使用用户输入的值(请参阅SQL Injection)。使用存储过程。

我希望您从组合框中返回的值不是表的 itemname 列中的有效值。

【讨论】:

  • 这是一个有效值,调试中的程序没有显示任何错误。组合框返回一个字符串格式的值,我使用项目名称作为 SQL 表中的 nvarchar 类型..
猜你喜欢
  • 1970-01-01
  • 2020-04-08
  • 2023-03-28
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
相关资源
最近更新 更多