从数据库中检索后添加值

时间:2013-02-17 05:56:47

标签: c# winforms add

在我的Windows应用程序中,我在数据库中有价格列,用于存储产品的价值。

在我的winform中,我有一个组合框和列表框。组合框显示数据库中的所有项目。当用户从组合框中选择产品并单击“添加”时,这些产品将添加到列表框中。

在用户点击添加项目的同时,我检索项目的价格并将其传递给添加此值的方法。

但是如何添加多个值,例如我将产品1,产品2从组合框添加到列表框,我想将这些项的值添加为550 + 200 = 750并将其显示在文本框中。

目前我正在这样做。

要检索价格:

public DataSet searchforPrice(string price)
        {
            DataSet dataSet = new DataSet();

            // Create connection object
            OleDbConnection oleConn = new OleDbConnection(connString);
            try
            {
                oleConn.Open();
                string sql = "SELECT [Price]  FROM [Product] WHERE [Product Name] ='" + price + "'";
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
                dataAdapter.Fill(dataSet, "Product");

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                oleConn.Close();
            }
            return dataSet;

  }

将项目添加到列表框并显示总价格:

private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(comboBox2.Text);
            maskedTextBox10.Text = addPrice().ToString();

        }

添加在组合框中选择的产品价格

public int addPrice()
    {
        DataSet ds = searchforPrice(comboBox2.Text);
        int price =  Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
        return price;

    }

1 个答案:

答案 0 :(得分:0)

searchforPrice方法的论据应该称为product,而不是price

现在,你addPrice方法是错误的,因为它不会增加任何价格。它只返回组合中当前所选项目的价格。它应该看起来像这样:

public int addPrice()
{
    DataSet ds = searchforPrice(comboBox2.Text);
    int sum = Convert.ToInt32(maskedTextBox10.Text);
    int price =  Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
    return sum + price;
}

当然,如果你删除项目,你应该做类似的事情。

IMO,您应该将每个项目的价格存储在列表中,而不是应用此逻辑,并在文本框中显示这些价格的总和。如果删除项目,则重新计算总和会更容易(也更正确)。