JTextArea als Statusanzeige

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo Community,

ich hab ein Problem und zwar schreibe ich gerade an einem Programm welches mir Daten von einer Datenbank in eine andere schreiben soll, quasi konvertiert. Das funktioniert auch alles wunderbar. Das Problem ist nur, dass ich mir immer verschiedene Statusmeldungen ausgeben wollte, wie zum Beipsiel -> "Mit DB1 Verbunden" "Abfrage startet" usw....Um dies zu realiseren habe ich ein Button mit einem ActionListener erzeugt, aber er schreibt den Text immer nur nach dem er die Methode komplett ausgeführt hat in die JTextArea. Also nicht nach und nach, sondern immer auf einmal komplett.

Als Frame funktioniert das alles prächtig, da werden die Kommentare immer nach und nach reingeschrieben, aber als JFrame mit einer JTextArea wird immer nur alles komplett ausgeben, nachdem die Methode abgearbeitet wurde.

Vielleicht kann mir hier ja jemand helfen.
Code:
private void button1ActionPerformed(ActionEvent evt) {

      treiber();
      
      sess = EDPFactory.createEDPSession();
      port=xxxx;
      String p="";
      p= new String(""+port);
      mandant = "eks";
      host = "belx1";
      password = textField1.getText();
      a = new String("JAVA abas-EKS");
      doConnect(host,port,mandant,password,a);



  }
  protected void doConnect(String p_host, int p_port, String p_mandant, String p_password, String p_appName)
  {
     //verbinden MySQL
     try
     {
      //dbVerbindung = DriverManager.getConnection("jdbc:odbc:mysql","","");
      dbVerbindung = DriverManager.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/mysql","xxxx","xxxx");
      textArea1.append("MySQL Verbindung erfolgreich..."+"\n");

     }
     catch(SQLException e)
     {
      textArea1.append("DB-Verbindungsfehler..."+"\n");
      System.out.println("SQLException: " + e.getMessage());
            System.out.println("SQLState: " + e.getSQLState());
            System.out.println("VendorError: " + e.getErrorCode());

      //System.exit(0);
     }

    //verbinden ABAS
    try{
      sess.beginSession(p_host,p_port,p_mandant,p_password,p_appName);
      textArea1.append("Verbindung zu ABAS erfolgreich hergestellt..."+"\n");
      button4.setEnabled(true);
    }
    catch(CantBeginSessionException e){
      textArea1.append("Kann keine Verbindung herstellen..."+"\n");
    }

  }
 
so hab es gerade mal ausprobiert und in der Methode wo nur die Verbindung hergestellt wird, klappt dies jetzt auch richtig gut....nur in der Methode in der zuerst gezählt wird wieviele Datensätze vorhanden sind und diese dann noch umgeschrieben werden klappt es nicht. Vielleicht liegt es auch daran das es einfach zu viel ist (11000 Datensätze).

Oder könnte es klappen wenn ich die Methode aufsplitte in 3 einzelne???
 
Code:
EDPQuery q = sess.createQuery();
     int row =0;

     try
     {
       sqlStatement = dbVerbindung.createStatement();
       textArea1.append("SQL Statement erzeugt..."+"\n");
     }catch(SQLException e){
       textArea1.append("Konnte Statement nicht erzeugen..."+"\n");
     }
     String tableTRUNCATE = "Truncate table teile";
     try{
             sqlStatement.executeUpdate( tableTRUNCATE );

          }
          catch(SQLException e)
          {
               textArea1.append("Fehler beim Löschen der DB..."+"\n");

          }
     try{
       int i=0;
       //Abfrage starten
       q.startQuery("Teil:Artikel",
                    "Suchwort",
                    "nummer<>`*.50;",
                    "nummer,sach,name,bem,zeichn,vpr,vbez,fotoz,yspez2,ydumesser,ylang,ybohr,ymaschsys,yliter,yradius,yform,yaufn,ystaerke,ybreite,ylae1,ybre1,ysta1,yslicer,yaudm,yindm,ydick,yzzahl,yschlitz,yrechts,ylinks,yschneid,yvariante,ytyp,yspform,ykatalog,yzteil,ygross");
       while(q.getNextRecord()){
         i=i+1;
         //textArea1.append("Test"+"\n");
       }

Die ist nur ein Teil der Methode, aber alleine dieser Teil führt dazu, dass nicht weiter passiert bis die "while(q.getNextRecord())" Schleife ausgeführt ist.

Vielleicht liegt es auch nur an dem DB System warum es solange dauert. Denn mit MySQL geht es wieder.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben