Pido Consejo Sobre Abrir Conexiones ADO

02/07/2003 - 20:08 por Grupo Bandera Vivar | Informe spam
Hola Grupo:

Os pido consejo sobre la siguente cuestion:

Tengo Hecha una aplicacion con continuos accesos a datos en multiples
formularios y rutinas, con acceso a Datos en SQL Server,ACCES y a datos
nativos COBOL a traves de ODBC, la aplicacion es utilizada por unos 70
usuarios en Red (Terminal Server).

Yo actualmente abro las conexiones a datos al inicializar la aplicacion
y las mantengo abiertas hasta que se cierra la aplicacion.

La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

Si alguien me puede aconsejar se lo agradezco.

Gracias.

Preguntas similare

Leer las respuestas

#1 Saga
02/07/2003 - 20:42 | Informe spam
Creo que esto depende de cada quien. En lo personal, a mi me
gusta abrir la conexion a la base de datos al inicio de la aplicacion
y cerrar al fin de la misma. Esto tiene la desventaja de que la
conexion puede estar ocia un buen rato si ningun dato es consultado.

Por otro lado, si realizas la conexion cada vez que necesitas
datos, entonces te encuentras con un aumento de tiempo de
consulta, pues ahora hay que tomar en cuenta el tiempo de
conexion.

Creo que todo depende de tus necesidades. Si tu servidor
aguanta las 70 conexiones simultaneas, entonces, siento yo,
que lo mejor es conectar una sola vez, al inicio. Si tu servidor
no las aguanta, entonces es mejor que te conectes cuando
necesites datos y luego te desconectes.

Solo mi opinion...
Saga

"Grupo Bandera Vivar" wrote in message
news:
Hola Grupo:

Os pido consejo sobre la siguente cuestion:

Tengo Hecha una aplicacion con continuos accesos a datos en multiples
formularios y rutinas, con acceso a Datos en SQL Server,ACCES y a datos
nativos COBOL a traves de ODBC, la aplicacion es utilizada por unos 70
usuarios en Red (Terminal Server).

Yo actualmente abro las conexiones a datos al inicializar la


aplicacion
y las mantengo abiertas hasta que se cierra la aplicacion.

La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

Si alguien me puede aconsejar se lo agradezco.

Gracias.


Respuesta Responder a este mensaje
#2 Sashka
02/07/2003 - 20:49 | Informe spam
La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

La respuesta es sí. y con respecto a lo de escribir mucho código
puedes en un módulo crear funciones para abrir y cerrar la BD de modo
que él único código que debes escribir es llamar a dichas funciones..

Public cn as adobd.connection

Public function AbreBD() as boolean
...

End Funcion

Public Sub CierraBD()
cn.close
End Sub

y en los formularios o en donde queira que sea que debes accesar a la BD

If abreBD=false then
msgbox "No se pudo abrir la Base de Datos"
Exit Sub
else:


.
CierraBD
End if

Sashka


"Grupo Bandera Vivar" escribió en el mensaje
news:
Hola Grupo:

Os pido consejo sobre la siguente cuestion:

Tengo Hecha una aplicacion con continuos accesos a datos en multiples
formularios y rutinas, con acceso a Datos en SQL Server,ACCES y a datos
nativos COBOL a traves de ODBC, la aplicacion es utilizada por unos 70
usuarios en Red (Terminal Server).

Yo actualmente abro las conexiones a datos al inicializar la


aplicacion
y las mantengo abiertas hasta que se cierra la aplicacion.

La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

Si alguien me puede aconsejar se lo agradezco.

Gracias.


Respuesta Responder a este mensaje
#3 jon
03/07/2003 - 09:17 | Informe spam
Hola

Según la información de Microsoft, el procedimiento correcto es abrir la
conexión, ejecutar la consulta y volverla a cerrar para así evitar quemar
recursos.Si lo haces de esta manera las consultas no se ralentizan ya que la
conexión que cuesta es la primera, quedando luego una especie de conexión
residual que hace que las siguientes conexiones sean rapidas.

Según mi experiencia (Yo trabajo sobre Unix SCO+Informix v.5.01) me llenaba
el servidor de conexiones hasta que el servidor decia que estaba sobrado de
procesos (Con lo cual no ejecutaba más conexiones/consultas).
Me encontré que no se cierran todas las conexiones. La solución que tomé
fue abrir la conexión y mantenerla abierta hasta que el programa acabara. Me
construi una dll que me gestionara las conexiones y me ejecutara las
consultas y así despreocuparme del acceso a datos.

Salu2

Jon Herrero



"Grupo Bandera Vivar" escribió en el mensaje
news:
Hola Grupo:

Os pido consejo sobre la siguente cuestion:

Tengo Hecha una aplicacion con continuos accesos a datos en multiples
formularios y rutinas, con acceso a Datos en SQL Server,ACCES y a datos
nativos COBOL a traves de ODBC, la aplicacion es utilizada por unos 70
usuarios en Red (Terminal Server).

Yo actualmente abro las conexiones a datos al inicializar la


aplicacion
y las mantengo abiertas hasta que se cierra la aplicacion.

La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

Si alguien me puede aconsejar se lo agradezco.

Gracias.


Respuesta Responder a este mensaje
#4 Sashka
03/07/2003 - 15:56 | Informe spam
:)) Siempre hay una mejor manera...

Sashka

"Eduardo A. Morcillo [MS MVP]" <emorcilloATmvps.org> escribió en el mensaje
news:#
> Public cn as adobd.connection
>
> Public function AbreBD() as boolean
> ...
>
> End Funcion
>
> Public Sub CierraBD()
> cn.close
> End Sub

Yo lo haria todavia mas simple. Dos funciones, una que ejecute


instrucciones
SQL y la otra que devuelva recordsets. Por ejemplo:

Function Execute(ByVal SQL As String) As Boolean
Dim Cnx As Connection

'...
Cnx.Open
Cnx.Execute SQL
Cnx.Close
'...

End Function

Function GetRecordset(ByVal SQL As String) As Recordset
Dim Cnx As Connection
Dim Rs As Recordset

'...
Cnx.Open
Rs.Open SQL, Cnx
Set Rs.ActiveConnection = Nothing
Cnx.Close
'...

Set GetRecordset = Rs

End Function

Eduardo A. Morcillo [MS MVP - VB]
http://www.domaindlx.com/e_morcillo


Respuesta Responder a este mensaje
#5 Antonio Gómez
04/07/2003 - 09:38 | Informe spam
Yo trabajo con un ERP, que abre una conexion que comparte con los distintos
modulos del programa.
Esta conexion se cierra cuando se finaliza la ejecucion del programa. Esto a
veces crea problemas de licencias de usuario ya que es muy usual que un
usuario inicie el programa y no lo cierre hasta que finalice su jornada.
Sin embargo, en la base de datos SQL Server hay una opcion para limitar el
tiempo de inactividad de una conexion, con lo que excedido este tiempo la
conexion se cierra. El problema es que no la encuentro en SQL Server 2000
(Hasta hace poco utilizaba SQL 6.5, y este parametro estaba en las
propiedades del servidor)

Por otra parte, si utilizo componentes o Dlls, y no puedo compartir la
conexion principal, abro y cierro las conexiones en cada proceso...

Saludos
"Grupo Bandera Vivar" escribió en el mensaje
news:
Hola Grupo:

Os pido consejo sobre la siguente cuestion:

Tengo Hecha una aplicacion con continuos accesos a datos en multiples
formularios y rutinas, con acceso a Datos en SQL Server,ACCES y a datos
nativos COBOL a traves de ODBC, la aplicacion es utilizada por unos 70
usuarios en Red (Terminal Server).

Yo actualmente abro las conexiones a datos al inicializar la


aplicacion
y las mantengo abiertas hasta que se cierra la aplicacion.

La cuestion es ¿ Seria mas correcto abrir una conexion cada vez que
tengo que acceder a datos y luego cerrarla ?, esto me llevaria a escribir
mucho codigo y el peligro de dejarme conexiones abiertas

Si alguien me puede aconsejar se lo agradezco.

Gracias.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida