2016-10-20 24 views
0

對於Netbeans項目,我需要使用JavaFX項目更新mySQL數據庫。 我可以添加一個帳戶,但我似乎不能編輯一個帳戶。SQL更新 - 出錯

這裏是給出錯誤的方法,但我不能看到我做錯了什麼。 也許SQL語法是錯誤的,那是我需要一個手。

@Override 
public void wijzigenAccount(Account teWijzigenAccount) throws DBException { 
    try(Connection conn = ConnectionManager.getConnection();){ 
     try(PreparedStatement stmt = conn.prepareStatement("UPDATE Account SET (naam, voornaam,login,paswoord,emailadres) values(?,?,?,?,?) WHERE naam = " + teWijzigenAccount.getNaam() +";");){ 
      stmt.setString(1, teWijzigenAccount.getNaam()); 
      stmt.setString(2, teWijzigenAccount.getVoornaam()); 
      stmt.setString(3, teWijzigenAccount.getLogin()); 
      stmt.setString(4, teWijzigenAccount.getPaswoord()); 
      stmt.setString(5, teWijzigenAccount.getEmailadres()); 
      stmt.execute(); 
     } catch (SQLException ex) { 
      throw new DBException("SQLException opgetreden in statement: " +ex.getMessage()); 
     } 
    } catch (SQLException ex){ 
     throw new DBException("SQLException opgetreden in connectie " + ex.getMessage()); 
    } 
} 

我是新來的,所以給我一個休息,我正在一步一步學習。

這是MySQL數據庫的形象已經爲幫助 enter image description here

感謝。

+0

在http://dev.mysql.com/doc/refman/5.7/en/update.html閱讀'UPDATE'的語法。你的使用是否符合? – Barmar

+0

它是'SET col1 = val1,col2 = val2,...'。沒有'SET(col1,col2,...)VALUES(val1,val2,...)'。你將'UPDATE'與'INSERT'混淆了。 – Barmar

+0

爲什麼你將'naam'設置爲與你在WHERE條款中匹配的值相同?這並沒有改變任何東西。 – Barmar

回答

2

這是INSERT的語法不適用於UPDATE。試試這種方式

UPDATE Account SET naam = ?, 
        voornaam = ?, 
        login = ?, 
        paswoord = ?, 
        emailadres = ? 
WHERE naam = " + teWijzigenAccount.getNaam() 
+0

他參數化了他的查詢。他只需要爲'WHERE'子句添加一個附加參數。 – Barmar

+0

@Barmar - 哦真的..對不起一個數據庫的人,查詢看起來像它是連接字符串將更新 –

0

我想你在更新查詢中的名稱周圍缺少''''。

UPDATE Account 
SET (
     naam 
     ,voornaam 
     ,LOGIN 
     ,paswoord 
     ,emailadres 
     ) 
VALUES (
    ? 
    ,? 
    ,? 
    ,? 
    ,? 
    ) 
WHERE naam = '" + teWijzigenAccount.getNaam() +"';");