कैसे करने के लिए लाने के लिए पूरा डेटाबेस से डेटा की तालिका के माध्यम से RMI का उपयोग कर सरणी विधि?

0

सवाल

मैं करना चाहते हैं लाने के लिए पूरा डेटाबेस से डेटा की तालिका के माध्यम से RMI. मैं का इस्तेमाल किया सरणी विधि में जावा इंटरफेस और मैं लागू किया है कि विधि के कार्यान्वयन में वर्ग. मेरा इरादा है लेने के लिए डेटा सरणी में कार्यान्वयन के माध्यम से और के माध्यम से 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;
}

मूल्यों से लौटे दूरदराज के तरीकों होना चाहिए serializable. सरणियों में जावा हैं serializable, हालांकि सरणियों एक निश्चित आकार की है और के बाद से आप कर रहे हैं की ओर लौटने का परिणाम एक डेटाबेस क्वेरी आप नहीं जानते आकार. इसलिए मैं सुझाव है कि विधि getArray वापसी एक ArrayList या बेहतर अभी तक, एक 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, Statement और Connection सभी कर रहे हैं बंद कर दिया ।

2021-11-24 08:26:23

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में