Cómo obtener los datos completos de la base de datos de la tabla a través de RMI utilizando el método de la matriz?

0

Pregunta

Quiero recuperar los datos completos de la base de datos de la tabla a través de RMI. He utilizado el método de la matriz en la interfaz Java y me han puesto en práctica ese método en la clase de implementación. Mi intención es tomar los datos de la matriz a través de la aplicación y mostrar a través de JTable en el lado del cliente. He creado una columna de la tabla en la base de datos. Tengo que conseguir que el conjunto de los datos de la tabla para el lado del cliente.

He adjuntado la codificación que hice. Me han comentado que los errores en la sección de código que me dieron.

interfaz

public interface Interface extends Remote {
     public static String[] getArray() throws Remote Exception; // Here it shows missing method 
                                                               //  body or declare abstract
}

La aplicación

public class TheImplementation extends UnicastRemoteObject implements Interface{
    
    public TheImplementation()throws Remote Exception{
        super();
    }
    
    private static final long serialVersionUID = -3763231206310559L;
    
    Connection con;
    PreparedStatement pst;
    ResultSet rst;

    public static String[] getArray() throws RemoteException{
        String fruitdetails = null; 
        try {
            Connection connection=ConnectionProvider.getConnection();
            Statement st=connection.createStatement();
            ResultSet rs=st.executeQuery("select *from details");
            while(rs.next()) { 
                fruitdetails= rs.getString("fruit");
                String tbData[]={fruitdetails};
            }
        }
        catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e);
        }
        return tbData;// Here it shows error. Cannot find symbol.
                           // I tried to declare array at top. But, It didn't work.
    }
}
java rmi
2021-11-24 05:53:25
1

Mejor respuesta

0

Los métodos abstractos en interfaces remotas no puede ser estático, por lo que necesita para cambiar la definición de interfaz para el siguiente.

public interface Interface extends java.rmi.Remote {
    public String[] getArray() throws RemoteException;
}

Los valores devueltos por los métodos remotos debe ser serializable. Los Arrays en java son serializables, sin embargo, las matrices tienen un tamaño fijo y desde el que devuelve el resultado de una consulta de base de datos no se puede saber el tamaño. Por lo tanto, sugiero que el método de getArray devolver un ArrayList o mejor aún, un CachedRowSet.

public interface Interface extends Remote {
    public CachedRowSet getArray() throws RemoteException;
}

Desde la clase TheImplementation es su servidor RMI de clase, es probablemente mejor registro de excepciones en lugar de mostrar una JOptionPane y siempre se debe registrar el seguimiento de la pila. Tenga en cuenta que a métodos remotos debe declarar que tirar RemoteException con el fin de informar a la RMI cliente que el método remoto fallado. Por lo tanto, aparte de registro de la excepción, el método getArray también puede lanzar una RemoteException.

El código siguiente muestra.

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;

public class TheImplementation extends UnicastRemoteObject implements Interface {

    public TheImplementation() throws RemoteException {
        super();
    }

    private static final long serialVersionUID = -3763231206310559L;

    public CachedRowSet getArray() throws RemoteException {
        try (Connection con = ConnectionProvider.getConnection();
             Statement st = con.createStatement();
             ResultSet rs = st.executeQuery("select * from details")) {
            RowSetFactory factory = RowSetProvider.newFactory();
            CachedRowSet fruitDetails = factory.createCachedRowSet();
            fruitDetails.populate(rs);
            return fruitDetails;
        }
        catch (SQLException e) {
            throw new RemoteException("Method 'getArray()' failed.", e);
        }
    }
}

Tenga en cuenta que el código anterior también se utiliza a tratar-con-recursos para asegurar que el ResultSet, Statement y Connection están todos cerrados.

2021-11-24 08:26:23

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................