Delphi - ADOConnection - Forma óptima de usarlo

   
Vista:

ADOConnection - Forma óptima de usarlo

Publicado por Jorge (1 intervención) el 13/07/2017 14:52:09
Hola
En primer lugar gracias a todos por los aportes que hacen en el foro para

ayudar a la comuinidad.

Mi problema es el siguiente:
¿Alguien puede explicarme como es la forma de trabajo óptima para hacer una

conexión a la base de datos SQL Server con ADOConnection?


Conozco dos maneras de hacerlo: ¿Cual es la apropiada?

En un DataModule coloco un componente TADOConnection, lo configuro y luego

desde los distintos formularios uso esa conexión para ejecutar consultas a la

base de datos.

Forma 1:
Cuando la aplicación se inicia, en el evento OnCreate del DataModule activo la

conexión ADOConnection1.Connected := true;

Esta conexión permanece abierta hasta que la aplicación se termina. Justo

antes de cerrar la aplicación hago ADOConnection.Connected := false;

Forma 2:
Cada vez que hago una consulta a la base de datos, activo la conexión y la uso:
1
2
3
4
5
6
7
ADOConnection1.Connected := true;
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.Active := false;
ADOQuery1.SQL.Text := 'Select * from tabla';
ADOQuery1.Active := true;
Luego de usarla, cierro la conexión.
ADOConnection1.Connected := false;

Mi aplicación usa muchas consultas sql, por eso siempre opté por la forma 1,

pero tengo un problema ajeno a la aplicación.
Se me presenta el problema que por motivos ajenos a la aplicación, se producen

micro cortes en la conexión al servidor. Esto hace que algunos componentes y

variables de la aplicación pierdan valores y esto bloquea la aplicación. Para

solucionarlo debe reconectar el ADOConnection1 y ejecutar nuevamente las

consultas involucradas.

Gracias por las ideas que puedan brindarme. Las valoraré muchísimo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ADOConnection - Forma óptima de usarlo

Publicado por E.T. (1173 intervenciones) el 14/07/2017 20:27:08
Pues como dices que son problemas ajenos a tu aplicación poco puedes hacer, yo haría lo mismo que estás haciendo tu, tener la conexion activa. Lo que pudieras hacer es verificar antes de cada consulta que tu conexion esté activa.
1
2
3
4
5
6
if not ADOConnection1.Connected then
  ADOConnection1.Connected := true;
//ADOQuery1.Connection := ADOConnection1; //<-- esto es completamente innecesario, pues el enlace entre un query y la conexion la haces desde diseño
ADOQuery1.Active := false;
ADOQuery1.SQL.Text := 'Select * from tabla';
ADOQuery1.Active := true;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad