2013-03-01 75 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