Bonjour,
Je développe une application Delphi qui se connecte à une base de données postgresql par l'intermédiaire du composant ADOconnection et d'un driver ole. Cela fonctionne bien.
Je dois implémenter une fonction qui reconnecte automatiquement l'application à la base de donnée en cas de perte du réseau.
Ma base étant en local sur mon poste de développement, je simule la perte de connexion en arrêtant le service "postgresql"
Problèmes:
1. ADOConnection.connected donne "true", ""ADOConnection.state=stopen" même quand le service est arrêté et qu'il n'y a pas de base de données accessible! J'ai résolu le problème par une fonction "isConnected" qui fait une requete sur la base, si je reçois une exception (donc la connexion avec la base n'est pas établie), je renvois un "false"
2. Quand que relance le service "postgresql", impossible d'avoir une connexion sans relancer l'application (ce que je ne veux pas parce que le travail de l'utilisateur sera perdu)
Donc
Je lance l'application qui se connecte à la base, "isConnected" me renvoie true... OK
Je stoppe le service "postgresql", "isConnected" me renvoie false... OK
Je relance le service "postgresql", et là.... "isConnected" me renvoie false... Impossible de refaire une connexion... C'est comme si l'application a gardé en mémoire la perte de connexion et ne reset pas le compo ADOConnection (pourtant je fais un ADOConnection.Close, puis ADOConnection.connected:=true)
Si je ferme l'application et la relance, là tout est OK
Est-ce que quelqu'un à un avis?
Merci d'avance
Partager