2013-02-17 158 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