View Full Version : [JAVA] client-server: invio dati letti da DB Access
Salve a tutti,
sto creando in Java un'apllicazione client server che utilizza i socket. Ho già creato la connessione tra client e server e la lettura di un database access (utilizzando jdbc-odbc) da parte del server. Ho un problema invece nell'invio al client dei dati letti nel database dal server. Una volta ottenuti i dati dal database, come devo trattare il ResultSet ????
Qualcuno sa darmi una mano?
Devo associare un InputStream ai dati letti dal database??
E' la prima volta che mi trovo ad implementare una cosa di qusto tipo: AIUTO!
Grazie anticipatamente.
Liuk
Avendo "connesso" client e server, se praticamente già a cavallo.
Per trasferire i dati devi solo stabilire un protocollo di comunicazione.
Detto in poche parole, attraverso i socket stabilisci un canale di trasferimento di byte da un punto ad un altro della rete.
Ora l'oggetto A comunica a B i risultati attraverso quel canale che trasmette byte. Potrestio fare così:
1. A ricava i dati da access
2. A trasforma i dati in un pacchetto di byte
3. A invia il pacchetto di byte attraverso il socket
4. B riceve il pacchetto di byte
5. B trasforma il pacchetto di byte in dati
I punti 1, 3 e 4 li hai già. Ti manca la trasformazione. Il meccanismo di trasformazione deve essere noto sia ad A che a B: cioè entrambi devono conoscere la lingua usata per la comunicazione e le sue regole.
Ad esempio, supponiamo di dover trasferire delle stringhe. A e B potrebbero appoggiarsi ad un terzo oggetto capace di trasformare sequenze di stringhe in un pacchetto di byte e un pacchetto di byte in una sequenza di stringhe:
public class Interpreter {
public ByteBuffer toBytes(String...data) {...}
public Collection<String> toStrings(ByteBuffer data) {...}
}
Potresti usare (ma è solo una possibilità) la serializzazione standard della piattaforma Java. Vale a dire che il linguaggio comune ad A e B per lo scambio di informazioni sarebbe quello della serializzazione Java standard.
Ad esempio:
//pseudo codice
public ByteBuffer toBytes(String...args) {
ArrayList<String> data = new ArrayList<String>();
data.addAll(Arrays.asList(args));
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oStream = new ObjectOutputStream(bout);
oStream.writeObject(data);
oStream.flush();
byte[] bytes = bout.toByteArray();
ByteBuffer buffer = ByteBuffer.allocate(bytes.length);
buffer.wrap(bytes).rewind();
return buffer;
}
Il metodo toStrings() farebbe l'inverso, considerando il pacchetto di byte come un qualcosa che contiene il prodotto della serializzazione di un ArrayList di Stringhe.
Con un meccanismo simile puoi trasferire i dati più diversi, purchè incapsulati in oggetti serializzabili. Non è comunque l'unica opzione.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.