PDA

Visualizza la versione completa : TADOQuery e connessione persistente


VaLvOnAuTa
31-08-2006, 10:44
Sempre per l'applicazione client/server che ho creato :zizi:

Il server utilizza il componente TADOQuery ( stesso il componente a connettersi, non utilizzo una TADOConnection) che si connette ad un server MySQL.
Ora ho notato che una volta avviato il Server (che un Windows service) il sistema funziona senza problemi.
Quando il giorno successivo avvio un client e mi connetto al server, al momento in cui il server deve eseguire una query, MySQL mi restituisce l'errore "MySQL Server has gone away"
Controllando sul sito di MySQL, ho scoperto che tale errore avviene quando la query da eseguire restituisce un dataset talmente grande da andare in timeout o quando la connessione scaduta.
Poi scopro che, come settaggio di default, la connessione scade se in 8 ore non viene effettuata alcuna richiesta.
Ora, dopo tante premesse, la domanda: la TADOQuery, senza l'appoggio di una TADOConnection, esegue la connessione al database alla sua creazione? Come faccio ad evitare che la connessione sia persistente ed evitare, quindi che dopo otto ore di inattivit, il database mi restituisca l'errore di connessione timed out, fermo restando che non vorrei cambiare le impostazioni del database?

Nikk11
31-08-2006, 11:29
Ma perch non usi una TAdoConnection che apri e chiudi quando ti serve??
Non ho mai usato una TAdoQuery senza connessione e quindi non saprei aiutarti :bh:

Ciao :ciauz:

alka
31-08-2006, 11:33
Anche secondo me non ha senso tenere aperta una connessione cos tanto tempo.

Dovresti semplicemente aprire la connessione, eseguire la query desiderata e, se non vi sono altre operazioni da compiere, chiudere la connessione, magari con un bel try...finally per garantire che ci avvenga.

Ciao! :ciauz:

VaLvOnAuTa
31-08-2006, 11:36
Quindi devo usare come intermezzo una TADOConnection.

Non so perch, ma credevo che la ADOQuery si connettesse al database solo al momento di eseguire una query. :bh:

Nikk11
31-08-2006, 12:13
Originariamente inviato da VaLvOnAuTa
Quindi devo usare come intermezzo una TADOConnection.

Non so perch, ma credevo che la ADOQuery si connettesse al database solo al momento di eseguire una query. :bh:

Effettivamente si connette quando apri la query... il problema la disconnessione!

:ciauz:

VaLvOnAuTa
31-08-2006, 13:07
Originariamente inviato da Nikk11
Effettivamente si connette quando apri la query... il problema la disconnessione!

:ciauz: Beh.. intendevo dire, ovviamente, che supponevo che la connessione durasse il tempo della query.
Comunque ho utilizzato una ADOCOnnection che faccio connettere prima di eseguire la query disconnettere una volta ottenuto il risultato.
Il monitor di MySQL mi ha mostrato la connessione e la disconnessione, quindi dovrei aver risolto.
Vi faccio sapere domani mattina :stordita:

Loading