moinmoin
hoffe, ihr habt alle gut geschlafen, und seid erholt in den neuen tag gerutscht
mein problem ist oben bereits beschrieben, und äußert sich folgendermaßen. ich bekomme ein table-update automatisch immer dann, wenn sich in der datenbank daten geändert haben. so weit so gut. diese daten werde auch in den verctor reingeschrieben, und dargestellt.
aber... :
wenn ich das ganze etwas länger laufen lasse, und den timestamp mit dazu anzeige, ist mir aufgefallen, das er neben den neuen daten auch die alten anzeigt
also bedeutet, ich habe neben den neuen daten aus der DB im vector auch noch die alten stehen.
klar, die muss ich irgendwie dort mit vector.clear() löschen. aber wo genau, und welchen der 2 vectoren mit meinen daten nehme ich?
muss ich nun vDaten.clear(); machen, oder holeDaten().clear(); und wo?
alle meine versuche den vector zu clearen sind bisher mit dem ergebnis ausgegangen, entweder wurde der vector nicht gecleared, oder das ganze zu früh, sodaß die tabelle leer blieb.
vielen dank für die hilfe.
hoffe, ihr habt alle gut geschlafen, und seid erholt in den neuen tag gerutscht
mein problem ist oben bereits beschrieben, und äußert sich folgendermaßen. ich bekomme ein table-update automatisch immer dann, wenn sich in der datenbank daten geändert haben. so weit so gut. diese daten werde auch in den verctor reingeschrieben, und dargestellt.
aber... :
wenn ich das ganze etwas länger laufen lasse, und den timestamp mit dazu anzeige, ist mir aufgefallen, das er neben den neuen daten auch die alten anzeigt
also bedeutet, ich habe neben den neuen daten aus der DB im vector auch noch die alten stehen.
klar, die muss ich irgendwie dort mit vector.clear() löschen. aber wo genau, und welchen der 2 vectoren mit meinen daten nehme ich?
Code:
public class MainTable extends JFrame{ //implements ActionListener{
public MainTable()
{
super("MainTable");
while (isrunning == true){
//System.out.println("gugge nach neuen daten ");
try{
if(i == 0){
this.TabelleErzeugen(holeDaten());
//this.TabelleErzeugen();
this.initGUI();
i++;
}
//Bei Änderung wird, wird TabelleUpdate aufgerufen.
if(neueDaten == true){
this.TabelleUpdate(holeDaten());
neueDaten = false;
}
holeDaten();
Thread.sleep(500;
}
catch (InterruptedException e) {
e.getMessage();
}
}
dbZugriff.CloseDB();
}
private JFrame frame = new JFrame();
private Vector vTitel;
private Vector vDaten;
private JTable table;
private boolean isrunning = true;
private int runde = 0;
private int aufruf = 0;
private DefaultTableModel defaultTableModel;
DBZugriff dbZugriff = new DBZugriff();
public boolean neueDaten = false;
public int firstrunner = 0;
int i = 0;
String rsold = "";
String rsnew = "";
ResultSet rs = null;
//Titel für JTable
public final static Vector COLUMN_IDENTIFIERS = new Vector() {
{
add("WKN");
add("1");
add("2");
add("3");
add("4");
add("5");
add("6");
add("Letzter Kurs Zeit/Datum");
}
};
public void GUI() {
Vector vDaten = new Vector();
Vector vTitel = new Vector();
Vector vtemp = new Vector();
}
public Vector holeDaten() {
TryFloat tryFloat = new TryFloat();
DBZugriff getDB = new DBZugriff();
int i = 0;
String dbLogin ="login" ;
String dbPassword ="password";
dbZugriff.OpenDB(dbLogin, dbPassword);
Vector results = new Vector();
try {
rs = dbZugriff.statement.executeQuery("SELECT 1, 2, 3, 4, 5, 6, 7, LETZTER_ZEIT_DATUM FROM datenbank ORDER BY 1 DESC,4 ASC");//order by LETZTER_ZEIT_DATUM DESC"); //
while (rs.next()) {
Vector scheine = new Vector();
scheine.add(rs.getString("1"));
scheine.add(tryFloat.setFloat(rs.getString("2"))/1000);
scheine.add(rs.getString("3"));
scheine.add(rs.getString("4"));
scheine.add(rs.getString("5"));
scheine.add(rs.getString("6"));
scheine.add(rs.getString("7"));
scheine.add(rs.getString("LETZTER_ZEIT_DATUM"));
results.add(scheine);
}
rsnew = results.toString();
if (rsold.equals(rsnew)){
neueDaten = false;
}
if (rsold != rsnew){
neueDaten = true;
rsold=results.toString();
}
else{
}
return results;
}
catch (SQLException e)
{
e.printStackTrace();
}
return results;
}
public void TabelleErzeugen(Vector vDaten)
{
defaultTableModel = new DefaultTableModel(1, 8);
//defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
defaultTableModel.setDataVector(vDaten, COLUMN_IDENTIFIERS);
table = new JTable(defaultTableModel);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
defaultTableModel.fireTableDataChanged();
}
public void TabelleUpdate(Vector vDaten)
{
Iterator it = vDaten.iterator();
while (it.hasNext()){
it.next();
//System.out.println(it.next());
}
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
defaultTableModel.setDataVector(vDaten, COLUMN_IDENTIFIERS);
defaultTableModel.fireTableDataChanged();
}
public void initGUI()
{
// JTable initialisieren
frame = new JFrame("Viewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table), "Center");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
MainTable mainTable = new MainTable();
}
}
muss ich nun vDaten.clear(); machen, oder holeDaten().clear(); und wo?
alle meine versuche den vector zu clearen sind bisher mit dem ergebnis ausgegangen, entweder wurde der vector nicht gecleared, oder das ganze zu früh, sodaß die tabelle leer blieb.
vielen dank für die hilfe.