Wyświetlanie konsoli w oknie swing

0

Witam,
zrobiłem prostą aplikacja która na wejściu z formularza graficznego przyjmuje dwa parametry.
Parametry przypisywane są do atrybutów obiektu "Confirmatordoc ". Następnie uruchamiana jest metoda odpowiedzialna za podłączenie do bazy danych oraz uruchomienie procedury PL/Sql. Procedura na wejściu otrzymuje wcześniej wpisane atrybuty, wykonuje swoją robotę i zwraca na konsole wynik z wykorzystaniem parametru typu out.
Moim zadaniem jest wyświetlenie tego wyniku nie na konsoli a na formularzu gdzie użytkownik wpisał parametry wejściowe. Jak to zrobić?

klasa odpowiedzialna za wykonanie procedury:

 
package getproc;

import static getproc.DbConnector.getDBConnection;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;


public class Confirmator {
    
     public static void Wywolanie(Confirmatordoc c) throws SQLException {

        Connection dbConnection = null;
        CallableStatement callableStatement = null;

        String ACKTEST= "{call ACKTEST(?,?,?)}";

        try {
            dbConnection = getDBConnection();
            callableStatement = dbConnection.prepareCall(ACKTEST);
            callableStatement.setInt(1, c.getIdWZk());
            callableStatement.setInt(2, c.getIdWZ());
            callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);

            // execute getDBUSERByUserId store procedure
            callableStatement.executeUpdate();

            String wynik = callableStatement.getString(3);

            System.out.println("wynik : " + wynik);

        } catch (SQLException e) {

            System.out.println(e.getMessage());

        } finally {

            if (callableStatement != null) {
                callableStatement.close();
            }

            if (dbConnection != null) {
                dbConnection.close();
            }

        }

    }
    
}

Oraz moment w którym wykonuje metody po przyciśnięciu w przycisk "Wykonaj"

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String idWZk = jTextField1.getText();
        String idWZ = jTextField2.getText();
        Integer idWZkLiczba = new Integer(idWZk);
        Integer idWZLiczba = new Integer(idWZ);
        
        try {
            Confirmatordoc conf = new Confirmatordoc();
            conf.setIdWZk(idWZkLiczba);
            conf.setIdWZ(idWZLiczba);
            Confirmator cDao = new Confirmator();
            cDao.Wywolanie(conf);
            System.out.println();

        } catch (Exception e) {
            System.out.println("błąd danych wejściowych:" + e.getMessage());
        }


    } 

0
public class Confirmator {

     public static String Wywolanie(Confirmatordoc c) throws SQLException {

        Connection dbConnection = null;
        CallableStatement callableStatement = null;

        String ACKTEST= "{call ACKTEST(?,?,?)}";

        try {
            dbConnection = getDBConnection();
            callableStatement = dbConnection.prepareCall(ACKTEST);
            callableStatement.setInt(1, c.getIdWZk());
            callableStatement.setInt(2, c.getIdWZ());
            callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);

            // execute getDBUSERByUserId store procedure
            callableStatement.executeUpdate();

            String wynik = callableStatement.getString(3);

            return wynik;

        } catch (SQLException e) {

A tego Stringa potem wrzucasz do obiektu okna z którego wywołałeś metodę tego listenera.
Maz gdzieś cały kod? Będzie łatwiej wytłumaczyć.

0

Tak,
projekt znajduje się tu: https://www.easypaste.org/file/gc5RUhmo/GetProc.zip?lang=pl

Właśnie nie wiem w jaki sposób mam odnieść się do zmiennej obiektu w metodzie wykonującej procedurę z poziomu klasy wyświetlającej formularz i okna.

0

Nie da się ściągnąć tego pliku.

0

To może tak: https://chomikuj.pl/Spooler

0
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        String idWZk = jTextField1.getText();
        String idWZ = jTextField2.getText();
        Integer idWZkLiczba = new Integer(idWZk);
        Integer idWZLiczba = new Integer(idWZ);
        
        try {
            Confirmatordoc conf = new Confirmatordoc();
            conf.setIdWZk(idWZkLiczba);
            conf.setIdWZ(idWZLiczba);
            Confirmator cDao = new Confirmator();
            String temp = Wywolanie(conf);
            jTextField1.setText(temp); // jeśli ma być w tym polu
   

        } catch (Exception e) {
            System.out.println("błąd danych wejściowych:" + e.getMessage());
        }
0
 String temp = Wywolanie(conf);
jTextField1.setText(temp); // jeśli ma być w tym polu

cannot find symbol
symbol: method Wywolanie(Confirmatordoc)
location: class ConfirmatorMainWindow

0

Ok wszystko jasne.
Zrobiłem tak: W confirmatordoc dodałem dodatkowy atrybut "Status"
W metodzie odpowiedzialnej za wykonanie procedury trzeba było metodą SET ustawić wartość atrybutu Status.

dbConnection = getDBConnection();
            callableStatement = dbConnection.prepareCall(US_WMS_ACK_WZK_TEST);
            callableStatement.setInt(1, c.getIdWZk());
            callableStatement.setInt(2, c.getIdWZ());
            callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);

            // execute getDBUSERByUserId store procedure
            callableStatement.executeUpdate();

            String wynik = callableStatement.getString(3);
            c.setStatus(wynik);

Następnie w formularzu metodą GET pobrałem status

Confirmatordoc conf = new Confirmatordoc();
            conf.setIdWZk(idWZkLiczba);
            conf.setIdWZ(idWZLiczba);
            Confirmator cDao = new Confirmator();

            
           cDao.Wywolanie(conf);
            jTextField1.setText(conf.getStatus()); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1