我们制作了这段代码,但是hashmap不包含任何值。 我们没有收到错误消息,所以我们不知道问题。 Artikel的PK是artikelNr,AangekochtArtikel的PK是多PK,即aankoopNr和artikkelNr。
public HashMap<Artikel, Integer> gratisArtikelBepalen(String winkelnaam)
{
Database db = new Database();
Connection con = null;
Artikel gratisArtikel = new Artikel("",0.0,"",0.0,0.0 ,0, 0.0);
int aantal = 0;
HashMap<Artikel, Integer> gratis= new HashMap <Artikel, Integer>();
int aankoopNr = 0;
try
{
con = db.getConnection();
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String usql = "SELECT max(aankoopNr) FROM Aankoop WHERE winkelNaam = '" + winkelnaam + "';";
ResultSet rs = stmt.executeQuery(usql);
while(rs.next())
{
aankoopNr = rs.getInt("max(aankoopNr)");
}
String sql = "SELECT Artikel.artikelNr, prijs, aantalBonuspuntenNodig,aantal\n" +"FROM Artikel,AangekochtArtikel\n" +
"WHERE Artikel.artikelNr = AangekochtArtikel.artikelNr AND aantalbonusPuntenNodig is NOT NULL AND aankoopNr = " + aankoopNr +" AND minBedrag <= bedrag\n ORDER BY prijs DESC;";
ResultSet re = stmt.executeQuery(sql);
re.last();
while(re.next())
{
String artikelnr = re.getString("Artikel.artikelNr");
double prijs = re.getDouble("prijs");
double aantalBonuspuntenNodig = re.getDouble("aantalBonuspuntenNodig");
gratisArtikel.setPrijs(prijs);
gratisArtikel.setAantPuntenNodig(aantalBonuspuntenNodig);
gratisArtikel.setArtikelNr(artikelnr);
gratis.put(gratisArtikel, aantal);
}
con.close();
}
catch(Exception ex)
{
try { con.close(); } catch(Exception ex2){};
System.out.println(ex.getMessage());
}
return gratis;
}
答案 0 :(得分:0)
尝试 gratis.Add(gratisArtikel)或 gratis.Add(gratisArtikel,aantal)
或者尝试在while循环内和
之后增加aantal变量gratis.put(gratisArtikel, aantal);
aantal++;
您似乎在索引0中插入了新对象