FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cómo cerrar conexión? Delphi, Zeos y Postgres
Accedo a Postgres a través de Zeos, la aplicación la usan unos 300 usuarios simultáneamente. El problema es que se me quedan las conexiones "idle in transaction" y me peta por exceder el número máximo de usuarios conectados.
Sólo desaparecen los usuarios "idle in transaction" cuando cierran el programa. ¿Cómo se cierra "bien" la conexión? Yo hago lo siguiente: *************** ZConnection.AutoCommit := true; ZConnection.Connect; ZQuery.Connection := ZConnection; ZQuery.RequestLive := true; ZQuery.CachedUpdates := false; ZQuery.SQL.Text := 'bla bla bla'; ZQuery.Open; ... ZQuery.Close; ZConnection.Disconnect; *************** He probado también con ZConnection.Destroy, pero aún así no desaparecen las conexiones del servidor hasta que no cierro el programa. Alguien me puede ayudar? |
#2
|
||||
|
||||
Por supuesto que es un grave problema, y la solución es sumamente sencilla.
Solo que debes modificar un poco la manera en que manejas tus conexiónes. De entrada, todos tus objetos conexión deberán estar en un DataModule, de esta manera despúes de que destruyas la instancia del datamodule solo necesitaras lo siguiente: ObjectoConexion.Close; InstanciaDatamodule.Free InstanciaDatamodule := Nil; Con esto la conexión será eliminada en postgress. Ahora, te comento que Con ADO puedes hacer uso de datos en frio, es decir, puedes mantener un dataset con datos resultado de una consulta o de la ejecución de un procedimiento almacenado sin la necesidad de tener abierta la conexión, esto te permite desarrollar aplicaciónes cliente servidor que no necesitan de conexiónes persistentes, logrando un sustancial ahorro de recursos en tu sevridor y oviamente un mejor performance. Suerte
__________________
Conoce mi blog http://www.edgartec.com |
#3
|
||||
|
||||
Cita:
// Saludos |
#4
|
||||
|
||||
Coincido contigo román en que el clientdataset es una buena opción para que no tenga que cambiar su capa de conexión, aunque déjame decirte que al tener postgress un proveedor OleDb, la mejor opción sobre zeos es ADO. :P
pero como te digo, coincido en el uso del clientdataset.
__________________
Conoce mi blog http://www.edgartec.com |
#5
|
|||
|
|||
Solucionado!
Al final lo he hecho con DataSetProvider y ClientDataSet de la siguiente forma:
1 - Asocio el ZConnection con la base de datos 2 - Asocio el ZQuery con el ZConnection 3 - Asocio al DataSetProvider el ZQuery (propiedad DataSet) 4 - Asocio un ClientDataSet con el DataSetProvider (propiedad ProviderName) La verdad es que funciona de maravilla. Gracias por la ayuda |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conexión delphi-postgres con driver open source | Leviatan | PostgreSQL | 0 | 28-03-2007 16:21:45 |
Postgres, Zeos y Delphi 7 | quali | PostgreSQL | 3 | 15-03-2007 22:41:39 |
Ayuda con la conexión de Postgres con Ruby on Rails | elgocho | PostgreSQL | 0 | 05-12-2006 22:59:31 |
Como realizar la conexion con Postgres SQL | alastor | PHP | 2 | 14-08-2006 21:07:18 |
Conexion xon Postgres | nuquen | Linux | 6 | 25-06-2003 20:33:08 |
|