Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003

    TADOQuery e connessione persistente

    Sempre per l'applicazione client/server che ho creato

    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?

  2. #2
    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

    Ciao

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    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.

  5. #5
    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.
    Effettivamente si connette quando apri la query... il problema è la disconnessione!


  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da Nikk11
    Effettivamente si connette quando apri la query... il problema è la disconnessione!

    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.