2014-09-29 32 views
0

在我的Java程序中,我正在使用Mysql數據庫。在使用Java實現每個查詢之前,我使用SQLDeveloper對其進行測試,以確保它能正常工作。MYSQL更新表不能與Java實現一起使用

在的SQLDeveloper下面的查詢工作完美:

UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') 
SET t.filter = 'BANNED' 
WHERE t.filter IS NULL 

(它只是標記爲禁止,在標題的列表,包含一個禁忌詞彙(如褻瀆)的目標

現在時。我用Java實現此查詢,代碼運行完美(沒有錯誤,沒有例外),但因爲它使用的SQLDeveloper不更新實際上DB以下是代碼:

String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;"; 
    PreparedStatement preparedStatement = connect.prepareStatement(query); 
    preparedStatement.executeUpdate(); 
    preparedStatement.close(); 

我創建了類似這個的其他查詢,他們的工作。我錯過了什麼嗎?

+0

你確定它不'噸的工作嗎?也許所有的領域都已經更新 – Mihai 2014-09-29 09:14:05

+0

100%肯定,我用的DB SELECT查詢來檢查它是否是你提交的SQL語句是否更新 – 2014-09-29 09:17:11

+0

@MarcoMicheli在查詢結束時不需要使用';'。檢查你的服務器日誌。如果它失敗,必須有一個異常 – 2014-09-29 09:35:16

回答

0

你需要使用Connection.commit()

String query = "UPDATE keyword t JOIN banned b ON t.excerpt LIKE CONCAT_WS('', '%', b.word, '%') SET t.filter = 'BANNED' WHERE t.filter IS NULL;"; 
PreparedStatement preparedStatement = connect.prepareStatement(query); 
preparedStatement.executeUpdate(); 
connect.commit(); 
preparedStatement.close(); 
+0

我試過你的解決方案,但我得到:java.sql.SQLException:無法調用提交時autocommit = true – 2014-09-29 09:18:03

+0

'connect.commit()'add' connect.setAutoCommit(false )'; – Vito 2014-09-29 09:21:48

+0

也嘗試過這一個,但仍然沒有更新 – 2014-09-29 09:28:45