没有为数据库

时间:2015-12-29 15:09:41

标签: java mysql sql

我有一个包含人员列表的应用程序,您可以在单击按钮时更改某个人的信息。所以我试图更新我的数据库,但它说我没有第7个参数的值,但是我有7个值。当我打印它时,它确实给了我7个值。它没有null的问题(在我的if中),因为我已经尝试过它了。

这是我的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;
        }

1 个答案:

答案 0 :(得分:2)

您的更新语句缺少最后一个参数personid - 您的最后一个是当前的影片。

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!!
  });