【发布时间】:2020-08-22 11:16:08
【问题描述】:
目前我的类图如下所示:
并且我想更新我的所有产品详细信息(prodName、prodDesc、prodCategory、prodDesc、制造商、供应商、stockLevel、reorderLevel、unitPrice),prodID 除外。
所以我使用了这个 SQL 查询:
UPDATE Product
SET prodName = @prodName,
prodCategory = @prodCategory,
prodDesc = @prodDesc,
manufacturer = @manufacturer,
supplier = @supplier,
stockLevel = @stockLevel,
reorderLevel = @reorderLevel,
unitPrice = @unitPrice
FROM product a, supply_item b, supply c
WHERE a.prodID = @prodID AND
@prodID = b.prodID AND
b.supplyID = c.supplyID;
但它无法工作,我的查询是否正确?
这是我的代码部分
protected void editSubmit_Click(object sender, EventArgs e)
{
MySqlConnection conn = new MySqlConnection(sqlConn);
string sql = "UPDATE Product SET prodName = @prodName, prodCategory = @prodCategory, prodDesc = @prodDesc, manufacturer = @manufacturer, supplier = @supplier, stockLevel = @stockLevel, reorderLevel = @reorderLevel, unitPrice = @unitPrice FROM product a, supply_item b, supply c WHERE a.prodID = @prodID AND @prodID = b.prodID AND b.supplyID = c.supplyID;";
MySqlCommand cmd = new MySqlCommand(sql, conn);
conn.Open();
cmd.Parameters.AddWithValue("@prodName", txtProductName.Text);
cmd.Parameters.AddWithValue("@prodCategory", txtCategory.Text);
cmd.Parameters.AddWithValue("@prodDesc", txtProductDesc.Text);
cmd.Parameters.AddWithValue("@manufacturer", txtManufacturer.Text);
cmd.Parameters.AddWithValue("@supplier", txtSupplier.Text);
cmd.Parameters.AddWithValue("@stockLevel", txtStockLvl.Text);
cmd.Parameters.AddWithValue("@reorderLevel", txtReorderLvl.Text);
cmd.Parameters.AddWithValue("@unitPrice", txtPrice.Text);
cmd.Parameters.AddWithValue("@prodID", txtProductID.Text);
cmd.ExecuteNonQuery();
conn.Close();
}
最初,我使用了这个查询,
"UPDATE Product SET prodName = @prodName, prodCategory = @prodCategory, prodDesc = @prodDesc, manufacturer = @manufacturer, supplier = @supplier, stockLevel = @stockLevel, reorderLevel = @reorderLevel, unitPrice = @unitPrice WHERE prodID = @prodID"
但它没有显示任何错误,并且我无法更新我的产品上的任何值 知道如何更新我的产品吗? 谢谢??????
【问题讨论】:
-
MySQL 不支持
FROM在UPDATE语句中。FROM子句中的逗号不建议在 any 数据库中使用。 -
对于任何 SQL,请先尝试在 SQL 工具中直接运行,然后再在 C# 中尝试。
-
哦,我明白了,那我应该用什么来代替
FROM? -
一种方法是将更新语句更改为选择,确认您正在获取所需的记录。确认后,将查询修改为更新语句(保留 were 子句)。 sqlservertutorial.net/sql-server-basics/sql-server-update-join
-
考虑绑定值,而不是使用@variables。
标签: c# mysql asp.net sql-update mariadb