2013-02-17 110 views
0

在我的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; 

    } 

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

​​

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

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

    } 
+0

你的代码需要一些工作。首先,查看“使用”语句,它将帮助您不需要明确地使用try/finally。您的方法参数被命名为“price”,但它将根据名为“Product Name”的数据库字段进行过滤。您应该重命名该参数。您还想考虑使用参数化查询来防止任何特殊字符和SQL注入漏洞。您的方法名称以小写开头,C#编码约定表明方法名称是PascalCased,与Java的camelCased约定不同。 – 2013-02-17 06:06:02

回答

0

的你的searchforPrice方法的论点应该被称为product th一个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; 
} 

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

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

+0

我收到错误“输入字符串格式不正确。” int sum = Convert.ToInt32(maskedTextBox10.Text),最初maskedTextBox是空的。有没有办法避免它 – 2013-02-17 06:16:08

+0

那么,我应该怎么知道你的输入是什么?这是主意,你应该注意细节。顺便说一句,你应该使用'int.TryParse()'。这个函数不会抛出异常。 – 2013-02-17 06:17:34