D
dackelfrosch
Gast
Ich schreibe momentan an einem Programm, das Daten in eine Datenbank schreibt und aus dieser herausliest. Auf meinem Rechner funktioniert dies auch einwandfrei (sowohl aus Eclipse gestartet, wie auch die .jar).
Nun habe ich das Programm (als executable jar) aber auch auf die Rechner zweier Kollegen kopiert und ihnen den gleichen DB Server (MySQL 5.5) installiert. Auch die Java Version ist auf allen Rechnern die gleiche (7).
Das Problem: Bei meinen Kollegen werden neu angelegte Daten teilweise nicht in der Datenbank gespeichert. Es werden aber auch keine Fehler geworfen!
Das Kurioseste ist, dass das Programm, solange es geöffnet ist die Daten aber kennt und zwar indem es sie aus der DB ausliest!
Ein Beispiel um mein kurioses Problem zu verstehen. Das Programm bietet die Möglichkeit einen Datensatz anzulegen. An ganz anderer Stelle kann ein PopUp-Menu alle angelegten Datensätze anzeigen. Ich habe es hundertmal überprüft: das PopUp holt sich die Datensätze aus der Datenbank!
So wird das Menü befüllt (vereinfacht):
Die Methode im Datenbank-Connector (vereinfacht):
Man kann nun also einen Datensatz anlegen, im Programm hin und her klicken, einen Kaffee trinken gehen und was weiß ich nicht treiben, wenn man das PopUp-Menü öffnet sind die Daten drin.
Aber wenn ich in die Datenbank schaue, sind sie dort nicht! Wenn ich das Programm schließe und neu starte, sind auch dort die Daten nicht mehr zu sehen.
Wie gesagt, das Problem tritt nur bei meinen Kollegen auf und auch nicht immer.
Vll. noch zur Vervollständigung die Methode, die die Daten in die DB speichert:
Ich bin dezent verzweifelt. Hat jemand eine Idee?
Nun habe ich das Programm (als executable jar) aber auch auf die Rechner zweier Kollegen kopiert und ihnen den gleichen DB Server (MySQL 5.5) installiert. Auch die Java Version ist auf allen Rechnern die gleiche (7).
Das Problem: Bei meinen Kollegen werden neu angelegte Daten teilweise nicht in der Datenbank gespeichert. Es werden aber auch keine Fehler geworfen!
Das Kurioseste ist, dass das Programm, solange es geöffnet ist die Daten aber kennt und zwar indem es sie aus der DB ausliest!
Ein Beispiel um mein kurioses Problem zu verstehen. Das Programm bietet die Möglichkeit einen Datensatz anzulegen. An ganz anderer Stelle kann ein PopUp-Menu alle angelegten Datensätze anzeigen. Ich habe es hundertmal überprüft: das PopUp holt sich die Datensätze aus der Datenbank!
So wird das Menü befüllt (vereinfacht):
Java:
JPopupMenu opp = new JPopupMenu("Dienste");
try {
List<Duty> duties = this.connector.findAllDutys();
Collections.sort(duties);
for (Duty dutyHelper : duties) {
JMenuItem item = new JMenuItem(dutyHelper.getName());
opp.add(item);
}
}
Die Methode im Datenbank-Connector (vereinfacht):
Java:
public List<Duty> findAllDutys() throws SQLException
{
List<Duty> duties = new ArrayList<Duty>();
Statement stmt = this.con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM DUTIES");
while (rs.next()) {
Duty duty = new Duty();
duty.setDutyID(rs.getInt("DUTY_ID"));
duty.setName(rs.getString("NAME"));
duties.add(duty);
}
rs.close();
stmt.close();
return duties;
}
Man kann nun also einen Datensatz anlegen, im Programm hin und her klicken, einen Kaffee trinken gehen und was weiß ich nicht treiben, wenn man das PopUp-Menü öffnet sind die Daten drin.
Aber wenn ich in die Datenbank schaue, sind sie dort nicht! Wenn ich das Programm schließe und neu starte, sind auch dort die Daten nicht mehr zu sehen.
Wie gesagt, das Problem tritt nur bei meinen Kollegen auf und auch nicht immer.
Vll. noch zur Vervollständigung die Methode, die die Daten in die DB speichert:
Java:
public void createDuty(Duty duty) throws SQLException
{
Statement stmt = this.con.createStatement();
stmt.executeUpdate("INSERT INTO DUTIES (NAME)"
+ "VALUES ('"
+ duty.getName()
+")");
stmt.close();
}
Ich bin dezent verzweifelt. Hat jemand eine Idee?