는 방법을 가져 완벽한 데이터에서 데이터베이스의 테이블을 통해 RMI 배열을 사용하는 방법은?

0

질문

고 싶은 가져 오기에서 완전한 데이터를 데이터베이스의 테이블을 통해 RMI. 내가 사용하는 방법을 배열 Java 인터페이스가 구현되는 방법에 구현 클래스입니다. 나의 기도를 배열에 있는 데이터를 통해 구현 및 보여를 통해 JTable 클라이언트 측에서. 을 만들었나 열 테이블에서 데이터베이스입니다. 제가 가지고 있는 데이터에서는 테이블을 클라이언트 측.

내가 붙어 코딩을 했습니다. 는 제가 언급했던 오류 코드 섹션에 나가고.

인터페이스

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

구현

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

최고의 응답

0

추상적인 방법에서 원격 인터페이스 할 수 없는 정적이,그래서 당신은 필요한 인터페이스를 변경하려면 정의를 다음과 같습니다.

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

값을 반환하여 원격 방법이어야 합 직렬화. 배 java 는 직렬화,그러나 배열이 있기 때문에 당신은 그 결과를 반환한 데이터베이스 쿼리는 알 수 없습니다. 따라서 나는 권하는 방법 getArrayArrayList 또는 더 나은 아직, CachedRowSet.

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

이 클래스 TheImplementation 귀하의 RMI 서버 클래스를,그것은 아마 더 나은 로그에 는 예외보다는 표시 JOptionPane 고 당신은 항상 로그에 스택 추적. 참고로 원격 메서드를 선언해야 합니다 그들은 던져 RemoteException 알리기 위해서는 RMI 클라이언트는 원격 방법에 실패했습니다. 따라서 별도 로그인 예외 방법 getArray 할 수 있도 RemoteException.

다음 코드를 보여 줍니다.

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);
        }
    }
}

참고로 위의 코드를 사용한 시도와 자원 하는지 확인 ResultSet, StatementConnection 모두 닫힙니다.

2021-11-24 08:26:23

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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