簡體   English   中英

從數據庫中刪除並減去特定單元格中的數據

[英]Delete and minus data at specific cell from database

我正在創建一個表單頁面,該頁面需要在數據網格視圖中顯示數據。 當用戶從網格視圖添加任何項目時,應從庫存中減去該項目,並在用戶按下添加按鈕時更新庫存。

我正在使用的代碼給了我這個例外:

附加信息:'='附近的語法不正確。

我的代碼:

    private void btnMoveItem_Click(object sender, EventArgs e)
    {
        SqlConnection con2 = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True");
        con2.Open();

        String Query1= "DELETE FROM Inventory WHERE id = " + tbID.Text + "";

        SqlCommand sqlcmd1 = new SqlCommand(Query1, con2);
        sqlcmd1.ExecuteNonQuery();

        SqlCommand sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity" +"WHERE id= " + tbID, con2);
        sqlcmd.Parameters.AddWithValue("@Item", this.nudQuantity.Text);
        sqlcmd.ExecuteNonQuery();

        con2.Close();
    }

錯誤是您將兩個字符串連接在一起而沒有空格。

但是還有許多其他錯誤。

所有用戶值都應是具有正確類型的sql參數。 必須解析/驗證nudQuantity.Text 也許id了。

string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True";

using (var con2 = new SqlConnection(connectionString))
{
    con2.Open();
    var Query1 = "DELETE FROM Inventory WHERE id = @id";

    var sqlcmd1 = new SqlCommand(Query1, con2);
    sqlcmd1.Parameters.AddWithValue("@id", tbID.Text);
    sqlcmd1.ExecuteNonQuery();

    var sqlcmd = new SqlCommand("UPDATE Inventory SET Quantity = @Quantity WHERE id=@id", con2);
    sqlcmd.Parameters.AddWithValue("@id", tbID.Text);
    sqlcmd.Parameters.AddWithValue("@Quantity", int.Parse(nudQuantity.Text));

    sqlcmd.ExecuteNonQuery();       
}

您也可以將這兩個查詢合並為一個查詢。

該查詢應該更像您所需要的。

UPDATE Inventory SET Quantity = Quantity-@Quantity WHERE id=@id;
DELETE FROM Inventory WHERE id = @id AND Quantity <= 0;

但是這里沒有檢查產品的可用性。 如果@Quantity大於Quantity,則不會引發任何錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM