c# - 通过 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!");
}
}
}
解决方案
这个答案是基于假设你已经在你的数据库中有这个项目,你只需要更新它。我将把答案分成三个步骤:
第一步:我假设您的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);
您应该对这些更改感到满意。
您可以做的另一件事是在您难以理解问题时始终调试您的应用程序。它有很大帮助!
推荐阅读
- r - R 中德语变音符号 ä、ö、ü 和 ß 的编码问题
- merge - 检查 Stylecop 警告是否已减少
- sql - 在 RDB 中设计一个表来销售多个项目,并计算销售的价值
- c# - 如何在 .editorconfig 的 CSharp 编辑器的嵌套范围内更喜欢完全限定的“使用名称”
- google-cloud-platform - Dataprep 配方无法加载“无法读取未定义的属性‘expandScriptLines’”
- jmeter - JMeter 等待页面完全加载
- jquery - JQuery 2-modal 冲突:需要“删除”animatedModal,但要使用 DELAY,以隐藏第二个模态的滚动条
- postgresql - 在postgresql中加入删除
- chatbot - 如何让我的聊天机器人只在下午 6 点到早上 8 点回答 - IBM Watson
- networkx - Draw Networkx Directed Graph using clustering labels as color scheme