2013-10-22 156 views
-1

我想同時動態更新字段的類別和英文列動態更新表數據

我試圖更新表數據,但此代碼不起作用。

String query6 = "UPDATE `tagger`.`postag` SET category='"+"sqll"+" and english='"+"sql"+""; 
psmt1 = conn2.prepareStatement(query6); 
psmt1.setString(1,sql); 
psmt1.setString(2,sqll); 
psmt1.executeUpdate(query6); 
+0

歡迎來到SO!請清楚你面臨的問題是什麼... – codeMan

+2

你能給我們表的結構嗎? 也;你要更新整個表並用這裏給出的內容覆蓋表中每一行的那些字段值,你需要一個where子句。 如果你得到一個錯誤,請給我們從控制檯的堆棧跟蹤,如果你不明白它,你看起來這裏是新的... – pythonian29033

+0

嘗試在數據庫的SQL控制檯中運行查詢,一旦你有完美的查詢,然後把你的Java代碼...這樣你就不必再次運行程序在每一個小的變化。也作爲pythonian提到,請在發佈時提供錯誤消息/ stacktrace。 – AsG

回答

0

它應該是:

String query6 = "UPDATE tagger.postag SET category=?, english=?"; 

(逗號而不是AND,許多RDBMS期待的參數問號,別人想$1$2這將是String query6 = "UPDATE tagger.postag SET category=$1, english=$2";

順便說一句,我強烈建議你不要連接引用的字符串。它使您的代碼看起來不像預先準備好的語句,並且難以閱讀。

+1

String query6 =「UPDATE'tagger'.'postag' SET category =?,english =?」; –

+0

@LorenzoGatti更新了問題 – Philip

0

爲什麼在使用PreparedStatement時字符串連接?
PreparedStatement很簡單隻需要使用?佔位

您必須到位問號(?)佔位符(如果有的話),然後才能執行PreparedStatement對象的供應值。通過調用PreparedStatement類中定義的setter方法之一來完成此操作。

String query6 = "UPDATE tagger.postag SET category=? and english=?"; 
                ↑    ↑ 
psmt1 = conn2.prepareStatement(query6); 
psmt1.setString(1,sql); 
psmt1.setString(2,sqll); 
psmt1.executeUpdate(query6);