Also ich habe ein eigenartiges Problem welches bei manchen Änderungen meines Programms passiert ist. Ich trage mit dem JDBC Treiber, Datensätze in eine MySQL Tabelle ein. Dies passiert auch erfolgreich und ich kann mir die Datensätze anzeigen lassen. Wenn ich aber meinen Select Befehl ausführe, werden nur solche Datensätze angezeigt, die ich Manuell eingefügt habe. Nicht die, welche ich über mein Programm erstelle. Hier kommt aber wieder das Problem, dass andere Select befehle diese Datensätze anzeigen. Es muss also irgendwo dort ein Problem geben.
Der Select Befehl soll mir die Letzten 5 Votes jedes Users anzeigen lassen:
Mit dieser Methode trage ich in die Datenbank ein:
Diese Methode wird nochmal durch eine andere Aufgerufen:
Ich wäre sehr Dankbar für Hilfe, da dieses Problem so inkonsistent ist. Manchmal Funktioniert mein Select plötzlich doch wieder, weshalb ich es am ehesten auf das Eintragen in die Datenbank zurück führe.
Der Select Befehl soll mir die Letzten 5 Votes jedes Users anzeigen lassen:
Code:
SELECT DISTINCT V.bandtitel, V.titel, V.genre, count(p_voteid) AS AnzahlVotes FROM t_votes as V
WHERE V.p_voteid
IN(SELECT V2.p_voteid
FROM t_votes AS V2
WHERE V2.p_voteid >=(SELECT V3.p_voteid
FROM t_votes AS V3
WHERE V3.f_nutzerid = V2.f_nutzerid
ORDER BY V3.p_voteid DESC
LIMIT 1 OFFSET 4))
GROUP BY bandtitel, titel, genre
ORDER BY AnzahlVotes DESC;
Code:
public void Vote_eintragen(DatenManager dm, Vote v) {
try {
// JDBC-Treiber laden
Class.forName(driver);
// Verbindung aufbauen
Connection con;
con = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO T_votes (bandtitel, titel, genre, f_nutzerid) values(?,?,?,?);";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, v.getBandtitel());
ps.setString(2, v.getTitel());
ps.setString(3, v.getGenre());
ps.setInt(4, sectionID);
ps.executeUpdate();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
Code:
public void abschicken(Nutzer n) {
for (int i = 0; i < n.getVotes().size(); i++) {
database.Vote_eintragen(this, n.getVotes().get(i));
}
if (isAlteVotesGelöscht()) {
database.votesLöschen(n);
}
}