2014-01-25 68 views
0

是否可以在更新查詢中插入字段? 我需要它,因爲在更新之前,我需要做一些控制。 p.s我知道我必須使用準備好的聲明,但我想知道這個錯誤,我想這是一個缺少的報價,我看不到。 錯誤:更新語法錯誤

int rs = st.executeUpdate("UPDATE shop SET quantity='" 
         + Quantity 
         + "' from warehouse,product where 
         warehouse.idProduct=shop.idProduct and 
         warehouse.idProduct=product.id and product.brand='" 
         + Brand + "' and product.productType='" + Product 
         + "'"); 
+0

如果你知道你應該使用準備好的聲明,爲什麼你不這樣做?在準備好的聲明中,您無論如何都不會收到所有這些引用,因此問題可能會消失。請注意,你給我們的代碼不是有效的Java ... –

+0

我以爲我可以把一個查詢更新,我錯了,無論如何,我意識到準備好的語句更容易編寫和更多的保護 – OiRc

回答

0

我想你想用一個連接的更新:

UPDATE shop s join 
     warehouse w 
     on w.idProduct = s.idProduct join 
     product p 
     on w.idProduct = p.id and 
      p.productType = '"+Product+"' and 
      p.brand = '" + Brand + "' 
    SET s.quantity = "+ Quantity 

作爲一個說明。我猜Quantity是數字。如果是這樣,你不需要引用價值。

1

這只是不是有效的SQL。 UPDATE語句不能有FROM子句。

Single-table syntax: 

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

Multiple-table syntax: 

UPDATE [LOW_PRIORITY] [IGNORE] table_references 
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
    [WHERE where_condition] 
+0

如果我想在更新之前檢查一下,我該怎麼辦? – OiRc

+0

做一個單獨的'SELECT'語句,然後根據結果進行'UPDATE'。 –

+0

明白謝謝。 – OiRc