Witam serdecznie, mam aplikację RMI: po stronie klienta mam okno z tabelą JTable...Chciałbym ją wypełnić danymi z bazy danych, a dostęp do bazy ma serwer...Próbowałem już przesłać od serwera do klienta obiekt typu CachedRowSet, ResultSet - nie działa...próbowałem pzresłać cały obiekt typu DefaultTableModel do klienta z serwera- działa, ale bez "isCellEditable" - jeśli serwer tworzy obiekt defaultTableModel z "isCelleditable" - wtedy u klienta gdy kliknę na komorke- wywala blad...
org.firebirdsql.jdbc.FBSQLException
at org.firebirdsql.jdbc.AbstractConnection.createStatement(AbstractConnection.java:771)
at org.firebirdsql.jdbc.AbstractConnection.createStatement(AbstractConnection.java:254)
at Connection.Pobranie_tabel.Pobierz_model(Pobranie_tabel.java:41)
at Classes.SerwerImpl.Pobierz_model(SerwerImpl.java:153)...itd
A po stronie serwera kod tworzenia DefaultTableModel wygląda tak:
public class Pobranie_tabel implements Serializable
{
private JComboBox combo_sortowanie;
private String selectedItem;
Interfejs RMI;
public Pobranie_tabel() throws RemoteException
{
super();
}
static String relacja;
public DefaultTableModel Pobierz_model(String zapytanie, String tableName) throws SQLException, RemoteException
{
String query=zapytanie;
relacja=new String(tableName);
ResultSet rs=null;
DefaultTableModel tModel=null;
try
{
rs = Polaczenie.conn.createStatement().executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
System.out.println(colCount);
String[] colHeaders = new String[colCount];
tModel = new DefaultTableModel()
{
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
{
return false;
}
};
for(int i=0;i<colCount;i++)
{
colHeaders[i] = rsmd.getColumnName(i+1);
}
tModel.setColumnIdentifiers(colHeaders);
while(rs.next())
{
Object[] obj = new Object[colCount];
for(int i=0;i<colCount;i++)
{
obj[i] = rs.getObject(i+1);
}
tModel.addRow(obj);
}
Polaczenie.conn.close();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"Nie mozna pobrac danych z bazy: "+ex.getMessage(),"ERROR", JOptionPane.ERROR_MESSAGE);
}
return tModel;
}
}
A ktoś wie jak przesłać z serwera do klienta obiekt podobnego typu co ResultSet, CachedRowSet z danymi tabeli odnośnie bazy danych? Chodzi mi o to, żeby klient dostał taki obiekt i wtedy po jego stronie można by wyciągać z takiego obiektu wszelkie potrzebne dane bazodanowe (juz tak w trybie "offline"-bez podlaczania do bazy")...Dziekuje i pozdrawiam