当我尝试将数据插入数据库时,我总是得到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);
}
}