2013-03-01 31 views
-4

我有Windows應用程序添加購買信息。購買之前添加到數據庫中,用戶從組合框中選擇項目並添加到列表框中。當用戶點擊添加購買時,數據庫中會有一個或多個項目。如何更新數據庫中的庫存數量?

其中的商品名稱與數據庫中的商品名稱完全一致。

我想獲得列表框中每個項目的字符串,然後編寫sql查詢,它減少了數據庫中項目的數量。總數量存儲在「數量」列下的「產品」表中。

有沒有人有想法來完成這項任務?

我想通過一個

public string Update(string product) 
     { 
      // Create connection object 
      int ix = 0; 
      string rTurn = ""; 
      OleDbConnection oleConn = new OleDbConnection(connString); 
      try 
      { 
       oleConn.Open(); 
       string sql = "UPDATE [Product] SET [Quantity]=[Quantity] - 1 " + " WHERE [Product Name]= " + product; 
       OleDbCommand oleComm = new OleDbCommand(sql, oleConn); 

       oleComm.Parameters.Add("@product", OleDbType.Char).Value = product; 

       ix = oleComm.ExecuteNonQuery(); 
       if (ix > 0) 
        rTurn = "Stock Updated"; 
       else 
        rTurn = "Update Failed"; 
      } 
      catch (Exception ex) 
      { 

      } 
      finally 
      { 
       oleConn.Close(); 
      } 
      return rTurn; 
     } 

而且上面的方法列表框項目的字符串傳遞給這個方法一個從下面方法得到的產品名稱:

public string updateStock() 
     { 
      string listItem = string.Empty; 
      foreach (var listBoxItem in listBox1.Items) 
      { 



       if (listBox1.Items.IndexOf(listBoxItem) < listBox1.Items.Count - 1) 
       { 
        listItem = listBox1.Items.ToString(); 
       } 
      } 

      return listItem; 

     } 

我會打電話這個代碼來自按鈕事件處理程序

Update(updateStock()); 
+2

你可以提供表的結構,也許用[SQL Fiddle](http // sqlfiddle.com)例子嗎? – araknoid 2013-03-01 07:52:54

+1

你是否在尋求關於SQL查詢的幫助,關於如何從列表框中獲取名稱,或者所有這些之間的內容?這個問題是非常廣泛的恐怕....也許你需要把它分成單獨的問題,並顯示你已經嘗試了每一個。 – baldric 2013-03-01 07:53:24

+0

我只想得到列表框中每個項目的字符串並將該字符串傳遞給更新方法..讓我編輯問題.. – 2013-03-01 07:59:20

回答

0

你可以試試這樣的:

public void UpdateStock() 
{ 
    foreach (var listBoxItem in listBox1.Items) 
    { 
     string result = Update(listBoxItem.ToString()); 
    } 
} 

public string Update(string product) 
{ 
    // Create connection object 
    string rTurn = ""; 
    OleDbConnection oleConn = new OleDbConnection(connString); 
    try 
    { 
     oleConn.Open(); 
     string sql = "UPDATE [Product] SET [Quantity]=[Quantity] - 1 WHERE [Product Name] = @product"; 
     OleDbCommand oleComm = new OleDbCommand(sql, oleConn); 

     oleComm.Parameters.Add("@product", OleDbType.VarChar, 50).Value = product; 

     oleComm.ExecuteNonQuery(); 

     rTurn = "Stock Updated";  
    } 
    catch (Exception ex) 
    { 
     rTurn = "Update Failed"; 
    } 
    finally 
    { 
     oleConn.Close(); 
    } 
    return rTurn; 
} 

編輯:添加參數時,可以很容易地指定大小 - 如上所示。 50是任意的。您應該確保大小與目標[產品名稱]列的大小相同。

+0

它適用於具有一個單詞的項目「筆記本電腦」,但如果你有像「三星Galaxy S3」的項目,它會引發錯誤。 – 2013-03-01 08:45:23