首页 > 解决方案 > 通过 C# Visual Studio 在 SQL 中更新信息不起作用

问题描述

我创建了一个程序(用于学校),它具有创建帐户、管理帐户(更新和删除)和删除帐户。除更新外,所有功能都有效,我不知道为什么。没有任何错误,它只是什么都不做。下面是代码:

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString);
        con.Open();
        using (SqlCommand cmd = new SqlCommand("UPDATE Inventory SET ItemID=@ItemID, ItemName=@ItemName, ItemType=@ItemType, Quantity=@Quantity,WarehouseLocation=@WarehouseLocation,QuadrantNumber=@QuadrantNumber,BinNumber=@BinNumber,DateUpdated=@DateUpdated" +
                " WHERE ItemID= '" + txtItemID.Text + "'", con))
        {
            if (txtItemID.Text == "@ItemID")
            {
                cmd.Parameters.AddWithValue("@ItemName", txtItemName.Text);
                cmd.Parameters.AddWithValue("@ItemType", cmbType.Text);
                cmd.Parameters.AddWithValue("@Quantity", udQuantity.Text);
                cmd.Parameters.AddWithValue("@WarehouseLocation", cmbWarehouse.Text);
                cmd.Parameters.AddWithValue("@QuadrantNumber", cmbQuadrant.Text);
                cmd.Parameters.AddWithValue("@BinNumber", cmbBin.Text);
                cmd.Parameters.AddWithValue("@DateUpdated", Convert.ToString(DateTime.Now));
                cmd.ExecuteNonQuery();
                con.Close();

                MessageBox.Show("Item Updated!");
            }
        }
    }

标签: c#sql-server

解决方案


这个答案是基于假设你已经在你的数据库中有这个项目,你只需要更新它。我将把答案分成三个步骤:

第一步:我假设您的primary_key是 ItemID,因此您不应该像在此处那样真正更新它:

更新库存 SET ItemID=@ItemID,...

您应该只删除ItemID = @ItemID,部分,因为我们不想更新它。

第二步:现在,这段代码看起来不正确:

if (txtItemID.Text == "@ItemID")

它将尝试将 txtItemID.Text 与字符串“@ItemID”匹配,我相信这不是您的目标,因为我可以理解它是您的 ID - 它总是错误的。

你应该删除这个if

第三步:您还需要更改where子句以将 ItemID 作为参数,如下所示:

" WHERE ItemID=@ItemID", con))

然后将其添加到您的参数中:

cmd.Parameters.AddWithValue("@ItemID", txtItemID.Text);

您应该对这些更改感到满意。

您可以做的另一件事是在您难以理解问题时始终调试您的应用程序。它有很大帮助!


推荐阅读