2015-12-29 60 views
1

我有一個包含人員列表的應用程序,您可以在單擊某個按鈕時更改某個人的信息。所以我試圖更新我的數據庫,但它說我沒有第7個參數的值,但是我確實有7個值。當我打印它時,它確實給了我7個值。它沒有null(在我的if else中)的問題,因爲我已經嘗試過,沒有這個。沒有爲具有數據庫的參數Java應用程序指定值

這是我的mSQL的

CREATE TABLE Persoon(
    persoonId int(3) NOT NULL AUTO_INCREMENT, 
    leeftijd int(3), 
    voornaam varchar(40) NOT NULL, 
    achternaam varchar (40) NOT NULL, 
    datum  date, 
    locatieId int(3), 
    filmId  int(3) NOT NULL, 
PRIMARY KEY (persoonId), 
FOREIGN KEY (filmId) references Film(filmId), 
FOREIGN KEY (locatieId) references Locatie(locatieId)); 

我的Java代碼

private void btnWijzigenActionPerformed(java.awt.event.ActionEvent evt) {            
    Object geselecteerdeObject = lstPersonen.getSelectedValue(); 
    Persoon geselecteerdePersoon = (Persoon) geselecteerdeObject; 
    if(txtLeeftijd.getText() != ""){ 
     try { 
      String string = txtDatum.getText(); 
      DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); 
      Date datumString = format.parse(string); 


      Persoon nieuwePersoon = new Persoon(geselecteerdePersoon.getPersoonId(),Integer.parseInt(txtLeeftijd.getText()), txtVoornaam.getText(), txtAchternaam.getText(),datumString,geselecteerdePersoon.getLocatieId(),geselecteerdePersoon.getFilmId()); 
      System.out.println("1p "+geselecteerdePersoon.getPersoonId() + " 2p " +Integer.parseInt(txtLeeftijd.getText()) + " 3p "+txtVoornaam.getText() + " 4p " + txtAchternaam.getText() + " 5p " + datumString + " 6p "+ geselecteerdePersoon.getLocatieId()+ " 7p " +geselecteerdePersoon.getFilmId());; 
      PersoonDao.updatePersoon(nieuwePersoon); 


     } catch (ParseException ex) { 
      Logger.getLogger(HoofdGUI.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    else{ 
    Persoon nieuwePersoon = new Persoon(geselecteerdePersoon.getPersoonId(),0, txtVoornaam.getText(), txtAchternaam.getText(),null,geselecteerdePersoon.getLocatieId(),geselecteerdePersoon.getFilmId()); 
    PersoonDao.updatePersoon(nieuwePersoon); 
    } 

    updatePersoonsLijst(); 
} 

我的方法updatePersoonsLijst

public void updatePersoonsLijst() { 
     mijnModel.clear(); 
     ArrayList<Persoon> lijstVanPersonen = PersoonDao.getPersonen(); 

     for (Persoon huidigePersoon : lijstVanPersonen) { 
      mijnModel.addElement(huidigePersoon); 
     } 
    } 

而且我updatePersoon

public static int updatePersoon(Persoon nieuwePersoon) { 
      int aantalAangepasteRijen = 0; 
      try { 

       aantalAangepasteRijen = Database.voerSqlUitEnHaalAantalAangepasteRijenOp("UPDATE Persoon SET leeftijd=?,voornaam=?,achternaam=?,datum=?,locatieId=?,filmId=? WHERE persoonId=?", new Object[] { nieuwePersoon.getLeeftijd(),nieuwePersoon.getVoornaam(), nieuwePersoon.getAchternaam(), nieuwePersoon.getDatum(), nieuwePersoon.getLocatieId(),nieuwePersoon.getFilmId() }); 
      } catch (SQLException ex) { 
       ex.printStackTrace(); 
       // Foutafhandeling naar keuze 
      } 
      return aantalAangepasteRijen; 
     } 

回答

2

您的更新聲明缺少最後一個參數personid - 您的最後一個當前是filmid。

aantalAangepasteRijen = Database.voerSqlUitEnHaalAantalAangepasteRijenOp("UPDATE Persoon 
    SET leeftijd=?,voornaam=?,achternaam=?,datum=?,locatieId=?,filmId=? 
    WHERE persoonId=?", new Object[] 
{ nieuwePersoon.getLeeftijd(), 
nieuwePersoon.getVoornaam(), 
nieuwePersoon.getAchternaam(), 
nieuwePersoon.getDatum(), 
nieuwePersoon.getLocatieId(), 
nieuwePersoon.getFilmId() 

// persoonId missing!! 
    }); 
+0

你是什麼意思?我做「geselecteerdePersoon.getPersoonId()」來選擇personId(我很抱歉這些名字是荷蘭語)。 –

+1

其中persoonId =?的參數未設置 – Jan

+1

或者其他:您的更新有7個,您只提供6個數組。 – Jan

相關問題