2016-05-06 39 views
-1

我正在使用WPF連接到SQL Server數據庫的C#項目中工作。我可以將數據插入表中,刪除,更新和選擇。C#&WPF:與SQL Server數據庫的連接

例如,我有一個表Parts列和另一個Quantity

我有這些示例值:零件:Tires和數量:3

我想要做的是當我一次選擇輪胎時,數量會變成2;即數量(2)。謝謝大家!

代碼隱藏是:

{ 
    SqlConnection conn = new SqlConnection("Server = localhost;Database = autoser; Integrated Security = true"); 

    conn.Open(); 
    SqlCommand cmd = new SqlCommand("SELECT Part FROM autoparts WHERE Part LIKE '%" + txtpart.Text + "%'", conn); 

    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataTable dt = new DataTable("dtkerkimi");       
    da.Fill(dt); 

    datag.ItemsSource = dt.DefaultView; 

    SqlDataAdapter adapt = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    adapt.Fill(ds); 
    conn.Close(); 

    int count = ds.Tables[0].Rows.Count; 

    if (count == 0) 
    { 
     MessageBox.Show("There isn't a part that you are looking for!"); 
    } 
    else 
    { 
     MessageBox.Show("Congrats"); 
    } 
} 
+1

的SQL你問如何發出SQL update語句? https://msdn.microsoft.com/en-us/library/ms177523.aspx 您的示例也是如何創建SQL注入漏洞的極好示例(http://stackoverflow.com/questions/601300/what -is-SQL注入)。我強烈建議研究參數化的SQL。 – DVK

+0

不,我想在零件領域選擇輪胎時要做的事情,數量應該從三個減到兩個。經過一段時間,當我再次選擇輪胎時,數量應該從兩個減到一個...... – user5827232

+1

您能提供代碼,瞭解人們如何選擇零件或選擇數量嗎?是否有一個事件處理程序附加到控件上的某個事件? – DVK

回答

-1

你的SELECT語句將只得到的數據,就不能對其進行更新。對於您將需要類似下面

SqlCommand upDateCmd = new SqlCommand("UPDATE autoparts SET Quantity = Quantity - 1 WHERE Part Like '%" + txtpart.Text + "%'", conn); 

一個這應該找到你想要的部分,然後由1減少數量(如果是0,將其降低到-1,如果你不更新語句如果想要發生這種情況,那麼在你的代碼示例的else塊中放入使用update命令的代碼)。

但是這會冒着sql injection的攻擊風險。一個更安全的方法是使用參數來防止這些形式的攻擊。

 var upDateCommand = new SqlCommand 
     { 
      CommandText = "UPDATE autoparts SET Quantity = Quantity - 1 WHERE Part = @partName" 
     }; 
     upDateCommand.Parameters.AddWithValue("@partName", txtpart.Text); 
1

這是你正在尋找更新和返回結果

UPDATE autoparts 
SET autoparts.Quantity = autoparts.Quantity-1 
OUTPUT DELETED.Part 
WHERE autoparts.Part like '%Tires%'