Foros del Web » Programando para Internet » ASP Clásico »

Controlar apertura de conexion a BD

Estas en el tema de Controlar apertura de conexion a BD en el foro de ASP Clásico en Foros del Web. Tengo que crear un include, compartido, obviamente, por todas las páginas de un área. El caso es que, siendo éstas muchas páginas y diferentes, nunca ...
  #1 (permalink)  
Antiguo 04/06/2008, 09:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 17 años, 1 mes
Puntos: 0
Controlar apertura de conexion a BD

Tengo que crear un include, compartido, obviamente, por todas las páginas de un área.
El caso es que, siendo éstas muchas páginas y diferentes, nunca se sabe si la conexión a la base de datos está abierta o ya la cerraron cuando se pide el include.
La sintaxis de la conexión es la siguiente:
Código:
Set cn = Server.CreateObject ("ADODB.Connection")
cn.ConnectionString = "driver={SQL Server}; server=blablablablabla..."
cn.Open
La cuestión es que necesitaré tener abierta la conexión dentro del include para hacer una sql y sacar una cosa u otra dependiendo del resultado.

Mi pregunta es esta:
Cómo puedo controlarlo de tal forma que no me de error al intentar abrir de nuevo la conexión si ya está abierta?

He visto alguna vez un comando parecido a este texto "on error resume next"
No se si está bien escrito o le falta código...

Se podría hacer también un if?
Código:
if cn<>"" 'es decir, si está abierta

if con<>nothing 'no se si funcionaría esta...
Opinen y ayuden por favor.

Muchas gracias por adelantado ;)
  #2 (permalink)  
Antiguo 04/06/2008, 10:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: Controlar apertura de conexion a BD

Hola Sancas, a reserva de ver tu código, no debería haber razón para tener siempre esa conexión abierta, utiliza en tu include solamente el string de conexión y conforme la vayas necesitando, creas, abres y destruyes, son solamente 3 líneas más de código que te ahorrarán muchísmo más de lo que te quitan.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 04/06/2008, 11:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Controlar apertura de conexion a BD

Cita:
Iniciado por u_goldman Ver Mensaje
Hola Sancas, a reserva de ver tu código, no debería haber razón para tener siempre esa conexión abierta, utiliza en tu include solamente el string de conexión y conforme la vayas necesitando, creas, abres y destruyes, son solamente 3 líneas más de código que te ahorrarán muchísmo más de lo que te quitan.

Saludos
Hola u_goldman, gracias por responder, pero no entiendo qué me quieres decir.

Son muchas páginas las del área, y más de la mitad ni las habré visto, tan sólo estoy modificando algunas cosas que ha programado otra persona.
Lo que si puedo decir, después de ver varias páginas es que hay dos formas de hacerlas...

1º forma:
Abre conexiones
Declara variables
Ejecuta funciones
Cierra y descarga
Escribe Html, Head, Body
Escribe el cuerpo
Cierra

2º forma:
Abre conexiones
Declara variables
Ejecuta funciones
Escribe Html, Head, Body
Escribe el cuerpo teniendo la conexión abierta porque necesita consultar cosas
Cierra

Entonces, el include va dentro del cuerpo, y para cada página estará abierta o cerrada la conexión, quién sabe...

Lo que quiero es un código breve(un if, lo que sea) para determinar si sigue abierta la conexión o ya la cerraron, y actuar en consecuencia (es decir, o ejecutar el código o abrir conexion y ejecutar el código)

Un saludo.
  #4 (permalink)  
Antiguo 04/06/2008, 11:22
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: Controlar apertura de conexion a BD

tu quieres saber el estado de la conexion??
entonces debes leer este POST

de cualquier manera, toma en consideracion lo que el Master Darkness U_G menciona
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 04/06/2008, 11:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Controlar apertura de conexion a BD

Gracias Shiryu_Libra por contestar. Retomo, por si alguien está interesado, lo que mencionas en el link:

Código HTML:
if isObject(conn) then
    Select Case conn.Status
       case 1
            ' Esta abierto
       case 2
            ' Se esta abriendo
       case 4
            ' Se esta ejecutando un comando
       case 8
            ' El objeto se esta cargando
       case Else
            ' El objeto esta cerrado
    end Select
end if
Así pues, mi código quedaría de esta forma, no?

Código HTML:
if isObject(conn) then
    Select Case conn.Status
       case 1
            ' Esta abierto
            ' Código
       case Else
            ' El objeto esta cerrado
            Set cn = Server.CreateObject ("ADODB.Connection")
            cn.ConnectionString = "driver={SQL Server}; server=blablablablabla..."
            cn.Open
            ' Código
    end Select
end if
Mañana por la mañana lo pruebo en el trabajo y ya os contestaré qué tal me va ;)
  #6 (permalink)  
Antiguo 04/06/2008, 15:42
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Controlar apertura de conexion a BD

solo un comentario sancas si el objeto esta en el "case 8 (El objeto se esta cargando)", al tratar de abrir de nuevo la conexión te dará error dado que en el select que has puesto, si es 2, 4 y los demás posible tratara de abrir siempre la conexión..

así que valida mas tu código...

no seria mas abrir al inicio de la pagina y cerrar al final?

e ir destruyendo los rs que se van creando para ir dejando limpio el server?????
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 04/06/2008, 16:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Controlar apertura de conexion a BD

Cita:
Iniciado por JuanRAPerez Ver Mensaje
solo un comentario sancas si el objeto esta en el "case 8 (El objeto se esta cargando)", al tratar de abrir de nuevo la conexión te dará error dado que en el select que has puesto, si es 2, 4 y los demás posible tratara de abrir siempre la conexión..

así que valida mas tu código...

no seria mas abrir al inicio de la pagina y cerrar al final?

e ir destruyendo los rs que se van creando para ir dejando limpio el server?????
Entiendo, se que lo ideal sería abrir al principio y cerrar al final, pero la idea es solucionar esto en pocas líneas, en vez de modificar todas las páginas para que sigan este patrón, ya que en muchas cierra antes de mostrar la etiqueta HTML y luego lo saca todo de golpe, pero en otras no...

Sobre los estados, sólo existen esos números? 1, 2, 4 y 8 o hay más?
Puedo hacer un if tipo:
Código HTML:
if conn.Status=1 or conn.Status=2 or conn.Status=4 or conn.Status=8 then
'código
else
'abrimos
'código
end if
Como último recurso siempre queda la opción de modificar todas las páginas y poner los cierres como comentarios... Qué remedio...
  #8 (permalink)  
Antiguo 04/06/2008, 16:14
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Controlar apertura de conexion a BD

pero igual tendrias que editar todas las paginas para validar si esta abierta la conexion

o no????
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 04/06/2008, 16:24
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: Controlar apertura de conexion a BD

preferentemente el Select, cada estado es diferente, no puedes evaluarlos por igual

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 04/06/2008, 16:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Controlar apertura de conexion a BD

Cita:
Iniciado por JuanRAPerez Ver Mensaje
pero igual tendrias que editar todas las paginas para validar si esta abierta la conexion

o no????
No... La validación la meto en el texto de un include, para evaluar si está abierta o ya se cerró y ejecutar el código correspondiente...

Cita:
Iniciado por Shiryu_Libra
preferentemente el Select, cada estado es diferente, no puedes evaluarlos por igual
Pero la conexión se abrió hace mucho (en caso de estar abierta) o se cerró hace un rato, y entre el texto de ese include tan sólo hay etiquetas de tablas, td, tr, digo yo que en esos momentos no debería tener los estados 2, 4 u 8, no?

Me veo al final editando todas las páginas para que no cierren la p*** conexión xDDDDD
  #11 (permalink)  
Antiguo 04/06/2008, 19:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 32
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Controlar apertura de conexion a BD

buenisimo el post. vi cosas muy utiles que vo ya implementar. muchas gracias a todos.
  #12 (permalink)  
Antiguo 05/06/2008, 09:25
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Controlar apertura de conexion a BD

Cita:
Iniciado por Sancas Ver Mensaje
...
Me veo al final editando todas las páginas para que no cierren la p*** conexión xDDDDD...
find and replace mi amigo sale mas facil, asi buscas todas las veces qeu se cierra y le pones un apostrofe antes en todas las paginas de forma automatica y haces una funcion de cierre al final

digo mucho mas rapidito o no?

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.