线程“main”java.lang.nullpointerexception中的Netbeans异常

时间:2014-05-20 19:40:16

标签: java mysql netbeans

当我尝试将数据插入数据库时​​,我总是得到nullpointerexeption。 我需要从班级 Speler 中保存“naam”,“kleur”,“sector”,“krediet”。

在开始时我们在consol中输入4个玩家(这里是代码“Spelers”。然后你玩几轮。然后你可以选择保存游戏。当我想保存游戏时它会给我一个错误。我有一个方法“maakSpelersAan”,他在那里制作玩家。但是另一种方法需要保存这些玩家。通常当你使用getMethod()时你有一个玩家的名字。

当您选择保存游戏时,方法“voegSpelerToe()开始运行。 它转到“domeincontroller (n1),然后转到persitentiecontroller (n2)然后转到数据库类”SpelerMapper“(n3)

我希望你能理解我的问题,我很抱歉我的英语不好

以下是连接数据库和查询的代码。 SpelerMapper类     的 (N3)

package persistentie;
import domein.Sector;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import domein.Speler;
import domein.Sector;


public class SpelerMapper
{

public void voegSpelerToe(String naam, String kleur, int code, int krediet)
{
    //geen code als er niet met een databank gewerkt wordt


    PreparedStatement invoerSpeler;
    Speler huidigeSpeler = null;
    try
    {

        Connection connection = PersistentieController.getInstance().getConnection();

        invoerSpeler = connection.prepareStatement("INSERT INTO Speler " + "(naam, kleur, sector, aantalZilverstukken) " + "VALUES ( ?, ?,?, ?)");


        invoerSpeler.setString(1, naam);
        invoerSpeler.setString(2, kleur);
       invoerSpeler.setInt(3, code);
        invoerSpeler.setInt(4,krediet);




        invoerSpeler.executeUpdate();


    } catch (SQLException sqlException)
    {
        sqlException.printStackTrace();
    } finally
    {
        PersistentieController.getInstance().closeConnection();
    }


}
 }

这是persetientieController,你可以在这里找到数据库的方法。 (N2)

package persistentie;

import java.sql.Connection;
import java.util.List;
import domein.DomeinController;
import domein.Gebiedskaart;
import domein.Speler;
import domein.Spel;
import domein.Vak;
import domein.Sector;

public class PersistentieController 
{    

private static PersistentieController persistentieController;

private SpelerMapper spelerMapper;
private Connectie connectie;
    private SpelMapper spelMapper;
    private GebiedskaartMapper gebiedskaartMapper;

  public static PersistentieController getInstance()
  { 
        if (persistentieController == null)
            persistentieController = new PersistentieController();
        return persistentieController;
  }

  public PersistentieController()
  {
      connectie = new Connectie();
      spelerMapper = new SpelerMapper();
              spelMapper = new SpelMapper();
              gebiedskaartMapper = new GebiedskaartMapper();
  } 


  public List<Speler> geefSpelers() 
  {
      return spelerMapper.geefSpelers();
  }


  public Connection getConnection()
  {
      return connectie.getConnection();
  }

  public void closeConnection()
  {
      connectie.closeConnection();
  }

      public void bewaarSpel(Spel spel)         
        {
            spelMapper.bewaarSpel(spel.getNaamSpel(), spel.getAantalRondes());

         }

       public List<Spel> geefSpel()
       {
           return spelMapper.geefSpel();
       }

       public void bewaarGebiedskaart(Gebiedskaart gebiedskaart, Vak vak)
       {
           gebiedskaartMapper.bewaarGebiedskaart(gebiedskaart,vak);
       }

        public void voegSpelerToe(Speler speler, Sector sector)
        {

        spelerMapper.voegSpelerToe(speler.getNaam(), speler.getKleur(), sector.getCode(), speler.getKrediet());    

    }

}

这是“Speler”类

package domein;
public class Speler 
{
private String naam;
private String kleur;
private Sector sector;
private int Sector;
private int krediet = 10;
private int extraSchattingWaarde = 0;
private int nummer;

@Override
public String toString() {
//assuming this class has Naam and aantalRondes fields
//replace by the real fields in your class
return "Naam speler : " + naam + "\n Zijn kleur : " + kleur + "\n Zijn sector : " + sector + "\n Zijn huidig krediet : " + krediet+ "\n";
}
/*public Speler(String naam, String kleur, int sector, int krediet)
{
    setNaam(naam);
    setKleur(kleur);
    Sector = sector;
    setKrediet(krediet);
}*/

public Speler(String naam, String kleur, Sector sector)
{
    setNaam(naam);
    setKleur(kleur);
    setSector(sector);
}

public String getNaam()
{
    return this.naam;
}

public void setNaam(String naam)
{
    //controle of het leeg is??
    this.naam = naam;
}

public Sector getSector()
{
    return this.sector;
}

private void setSector(Sector sector)
{
    //tussen 1 en 4
    this.sector = sector;
}

public String getKleur()
{
    return this.kleur;
}

private void setKleur(String kleur)
{
    //controle of het de beschikbare kleuren zijn
    this.kleur = kleur;
}

public int getKrediet()
{
    return this.krediet;
}

public void setKrediet(int krediet)
{
    this.krediet = krediet;
}

public int getExtraSchattingWaarde()
{
    return this.extraSchattingWaarde;
}

public void setExtraSchattingWaarde(int waarde)
{
    this.extraSchattingWaarde = waarde;
}
}

这是我获取方法的主要类,domeincontroller (n1)

package domein;

import java.util.*;
import talen.Taal;
import persistentie.PersistentieController;

public class DomeinController 
{
private Spel spel;
private Taal taal;
private Speler speler;
private Sector sector;
private ArrayList<Sector> sectoren = new ArrayList();
private SpelerRepository spelerRep;
private PersistentieController pers;


public DomeinController() {
    spelerRep = new SpelerRepository();
    pers = new PersistentieController();
}

public void kiesTaal(String taal)
{
    this.taal = new Taal(taal);
}

public void startSpel()
{
    this.spel = new Spel();
}

public Taal getTaal()
{
    return taal;
}

public void maakSpelers(String naam, String kleur, int sectorCode)
{
    sectoren = spel.getSectoren();
    Sector sct=null;
    for(Sector s : sectoren)
    {
        if(sectorCode==s.getCode())
        {
            sct=s;
        }
    }
    spelerRep.maakSpelerAan(naam, kleur, sct);

}

 public void voegSpelerToe()
 {  
   pers.voegSpelerToe(this.speler, this.sector);
 }

}

0 个答案:

没有答案