Cita:
Empezado por Mteje
La cuestion es: es conveniente que un procedimiento si necesita consultar a la base de datos algo cree un componente TADOQuery dinamicamente y al finalizar el procedimiento lo destruya? o conviene que la unit tenga una variable TADOQuery global que se conecte cuando inicia el software y permanezca siempre conectada?
Mas que nada por la cantidad de conexiones activas cuando el software empiece a crecer ya que esta en etapas inciales.
|
Creo que en este caso está confundiendo 2 cosas diferentes (o las estás mezclando cuando no debería ser así).
Una cosa es la consulta
TADOQuery y otra cosa es la conexión
TADOConnection.
Abro paréntesis.
En este caso ADO tiene cierta culpa, porque en un
TADOQuery puedes definir también la cadena de conexión. En algún caso esto puede ser beneficioso (para ahorrar un componente
TADOConnection), pero en otros puede ser confuso.
Cierro paréntesis.
Crear un
TADOQuery es poco costoso al igual que otros componentes. Lo que realmente tarda es "realizar la conexion" (sea desde un
TADOConnection o desde un
TADOQuery).
Además lo que tampoco sería nada correcto es crear una conexión por cada
TADOQuery que necesitemos.
En este caso estoy de acuerdo con
[Casimiro] y optaría (normalmente lo hago así) por una solución mixta.
1) Crear un
TADOConnection en un lugar accesible y conectarlo.
2) Crear
TADOQuery cuando sea necesario y destruirlos cuando ya no se usen y conectarlos a elemento del punto 1.
De esta forma:
- No consumes tiempo innecesario en conectar.
- No consumes más conexiones de las necesarias.
- Creas los componentes cuando los necesitas y los destruyes cuando ya no son necesarios (en tu caso los TADOQuery). Por lo tanto, no consumes memoria nnecearia.