Newsgroup: it.comp.software.database
Titolo: Domanda su MySQL

Ciao a tutti,
mi stavo chiedendo perchè con MySQL, ma più in generale con server database 
è necessario aprire una connessione prima di inviare le proprie richieste e 
non è possibile instaurare una connessione stateless tipo quella del 
protocollo http.
Mi spiego meglio con un esempio.
Normalmente, per leggere dei record di una tabella uso questo schema:
-> Apro DB 
-> Invio richiesta ("SELECT * FROM ...")
-> Chiudo DB
Ora, nell'apertura DB è ovviamente incluso il database su cui sto lavorando, 
l'eventuale userid, password, opzioni varie, etc.
Ma non sarebbe meglio una connessione del tipo
-> Invio richiesta (<dati>,"SELECT * FROM ...")
dove <dati> contiene appunto le opzioni scritte sopra (userid, password, 
opzioni varie...).
Non riesco a spiegarmi il motivo per cui si debba necessariamente aprire e 
chiudere una connessione (fasi "APRI DB" e fasi "CHIUDI DB").
Ciao,
        Fabrizio

 protocollo http.
Quale sarebbe il vantaggio in questo?
Davide

dav...@yahoo.com
 wrote:

Il vantaggio sarebbe che non dovrei necessariamente aprire una connessione 
prima di poter inoltrare dei comandi/richieste.
E soprattutto non mi devo ricordare di *chiudere* le connessioni, il che 
magari per un'applicazione ricorsiva porta a degli errori, come č successo 
a me.
Non vedo proprio il motivo di dover stabilire delle connessioni (mediante 
comando open) se devo semplicemente inviare e ricevere una risposta.
Ma sicuramente ci sarą una motivazione di fondo per cui si č preferita una 
connessione diversa da una stateless.
Tu che pensi ?
Ciao,
        Fabrizio

 Tu che pensi?
Io penso che il Web e' iniziato come stateless, e poi tutti si sono
messi a cercare il modo per farlo diventare statefull (cookies,
sessions...). Un motivo ci sara'...
In secondo luogo, in genere non e' che mandi UNA richiesta, in un
programma ne mandi parecchie, quindi tanto vale tenersi la connessione
aperta, la apri all'inizio e la chiudi alla fine.
In terzo luogo una connessione "stateless" impedisce la creazione
di transazioni multiple (se ogni richiesta inizia una nuova
connessione il db non puo' tenere traccia delle operazioni
precedenti), ed in una applicazione questo non e' bello.
Davide

 precedenti), ed in una applicazione questo non e' bello.
In realtà essendo una connessione client/server, l'host rimane sempre lo 
stesso, anche in caso di connessioni stateless.
Ciao,
        Fabrizio

 stesso
Certo, e magari anche il client, ma come fai ad esserne sicuro?
Davide

dav...@yahoo.com
 wrote:

Quello che volevo dire è che l'ip dell'host rimane ovviamente lo stesso.
E quindi può essere tracciato quello che ha fatto l'host.
Ciao,
        Fabrizio


Se proprio ci tieni tanto, perché non scrivi una funzioncina che wrappi la
sequenza (connessione-query-chiusura)?
Ciao,
-Bura-

 sequenza (connessione-query-chiusura)?
Gia` fatto. :-)
Mi chiedevo, però, perchè non fosse una cosa "nativa".
Ciao,
        Fabrizio

 sequenza (connessione-query-chiusura)?
Volevo aggiungere una cosa.
In un programma ho una ruotine che fa una sequenza apri-query-chiudi circa 
20 volte al secondo ogni 20 secondi (chiamata da un ciclo for).
Ogni tanto il programma se ne esce con un errore del tipo "La tabella non 
esiste" all'interno di questa routine in cui tutte le stringhe SQL sono 
statiche. Questo errore esce fuori una volta al giorno, circa e molto 
casualmente.
A questo punto ho fatto in modo che l'archivio venisse aperto e chiuso una 
volta sola (prima e dopo il ciclo for).
Dopo questa modifica è passata circa una settimana di funzionamento senza  
alcun problema.
Suppongo fosse un problema di ado per via del numero eccessivo di aperture e 
chisure del dabatase (circa 20 ogni secondo, ogni 20 secondi).
A questo punto, la sequenza che mi hai suggerito non andrebbe bene, perchè 
se la mettessi all'interno del ciclo for (in cui c'e' la query), aprirebbe 
e chiuderebbe il db 20 volte al secondo, tirando fuori sempre qualche 
errore inesistente.
Invece se fosse una cosa nativa, per ADO si trattarebbe semplicemente di una 
query, che non creerebbe problemi al mio programma (visto che già effettua 
parecchie query al secondo).
Spero di essere stato chiaro.
Ciao,
        Fabrizio