为什么我在MySQL'UPDATE'命令上遇到错误?

问题描述

当前我的类图如下:

enter image description here

,我想更新 ALL 我的产品详细信息(prodName,prodDesc,prodCategory,prodDesc,制造商,供应商,stockLevel,reorderLevel,单价) / p>

所以我使用以下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,unitPrice = @unitPrice FROM product a,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,unitPrice = @unitPrice WHERE prodID = @prodID" 

,但没有显示任何错误,我无法更新产品上的任何值 知道如何更新我的产品吗? 谢谢?

解决方法

MySQL中的等效项似乎是:

UPDATE product p JOIN
       supply_item si 
       ON p.prodId = si.prodId JOIN 
       supply s
       ON s.supplyID = si.supplyID;
    SET p.prodName = @prodName,p.prodCategory = @prodCategory,p.prodDesc = @prodDesc,p.manufacturer = @manufacturer,p.supplier = @supplier,p.stockLevel = @stockLevel,p.reorderLevel = @reorderLevel,p.unitPrice = @unitPrice
WHERE p.prodID = @prodID;

注意:

  • 从不FROM子句中使用逗号。
  • 始终使用正确的,明确的,标准,可读的JOIN语法。
  • 使用有意义的表别名(例如表名的缩写),而不是任意字母。