G
Guest
Gast
hallo leute,
ich post mal den ganzen code, da der fehler vielleicht woanders versteckt ist als ich denke. das problem ist kurz:
im konstruktor wird aktuelleKursAbfrage aufgerufen, um danach eine db-abfrage zu machen. dort liegt das problem.
die db-abfrage kommt zu mehreren ergebnissen, die dann weiterverarbeitet werden sollen ( in aktuellerKursEintrag(1)).
obwohle es eine while schleife ist wird aber die methode aktuellerKursEintrag(1) nur einmal abgearbeitet um sich dann aus der klasse zu verabschieden.
dieses problem besteht erst seit ich die "1" mitübergebe. was heisst, wenn ich die methode aktuellerKursEintrag so aufrufe macht das programm was ich von ihm erwarte. warum???
ich post mal den ganzen code, da der fehler vielleicht woanders versteckt ist als ich denke. das problem ist kurz:
im konstruktor wird aktuelleKursAbfrage aufgerufen, um danach eine db-abfrage zu machen. dort liegt das problem.
die db-abfrage kommt zu mehreren ergebnissen, die dann weiterverarbeitet werden sollen ( in aktuellerKursEintrag(1)).
obwohle es eine while schleife ist wird aber die methode aktuellerKursEintrag(1) nur einmal abgearbeitet um sich dann aus der klasse zu verabschieden.
dieses problem besteht erst seit ich die "1" mitübergebe. was heisst, wenn ich die methode aktuellerKursEintrag so aufrufe macht das programm was ich von ihm erwarte. warum???
Code:
import java.util.Date;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.*;
import java.util.GregorianCalendar;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class AktualisierungTagesfahrplan extends DBANSCon implements ActionListener {
private int Status_ID = 0;
private String datum = null, zeit = null, vorschauZeit = null;
private static int vorschauFaktor = 15; //15min in ms
public AktualisierungTagesfahrplan() {
SystemZeit DatumundZeit = new SystemZeit();
datum = DatumundZeit.getAktuellesDatum();
zeit = DatumundZeit.getAktuelleZeit();
try {
getBerechnungVorschauZeit();
aktuelleKursAbfrage();
// con.commit();
}
catch (SQLException ex) {
}
catch (ParseException ex) {
ex.printStackTrace();
}
}
private void aktuelleKursAbfrage() throws SQLException {
//Es wird nach Kursen gesucht, die in den Nächsten Minuten (vorschauzeit) abfahren.
rs = stmt.executeQuery(
"select distinct status_id from tagesfahrplan t, tf_Status s, jf_fahrplan f " +
"where (t.gueltig_am = '" + datum + "') " +
"and (t.tagesfahrplan_id = s.tagesfahrplan_id) " +
"and (s.kurs_id = f.kurs_id) " +
"and (abfahrt >= '" + zeit + "') " +
"and (abfahrt < '" + vorschauZeit + "') " +
"and (ankunft is null)");
// System.out.println("bin da gewesen!");
while (rs.next()) {
Status_ID = rs.getInt("status_id");
aktuellerKursEintrag(1);
}
rs = stmt.executeQuery(
"select distinct status_id from tagesfahrplan t, tf_Status s, jf_fahrplan f " +
"where (t.gueltig_am = '" + datum + "') " +
"and (t.tagesfahrplan_id = s.tagesfahrplan_id) " +
"and (s.kurs_id = f.kurs_id) " +
"and ((abfahrt is null) " +
"and (ankunft >= '" + zeit + "'))");
while (rs.next()) {
rs = stmt.executeQuery(
"select distinct status_id from tagesfahrplan t, tf_Status s, jf_fahrplan f " +
"where (t.gueltig_am = '" + datum + "') " +
"and (t.tagesfahrplan_id = s.tagesfahrplan_id) " +
"and (s.kurs_id = f.kurs_id) " +
"and ((ankunft is null) " +
"and (abfahrt <= '" + zeit + "'))");
while (rs.next()) {
Status_ID = rs.getInt("status_id");
aktuellerKursEintrag(2);
}
}
}
private void aktuellerKursEintrag(int status) throws SQLException {
//Befindet sich der jeweilige Kurs kurz (zwischen vorschauzeit und Systemzeit) vor Kursbeginn,
//so wird das Attribut Status in der DB auf 1 gesetzt.
// int status = 1;
stmt.executeUpdate("update tf_status " +
"set status = " + status + " " +
"where (status_id = " + Status_ID + ")");
}
private void getBerechnungVorschauZeit() throws ParseException {
DateFormat df = new SimpleDateFormat("HH-mm-ss");
GregorianCalendar gc = new GregorianCalendar();
gc.add(gc.MINUTE, vorschauFaktor);
Date date2 = gc.getTime();
vorschauZeit = df.format(date2);
}
}