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

conexiones...

Estas en el tema de conexiones... en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo una pregunta y me gustaria saber si estoy haciendo bien esto, en cada pagina que tengo hago conexion con la base ...
  #1 (permalink)  
Antiguo 14/08/2002, 16:50
 
Fecha de Ingreso: julio-2002
Mensajes: 60
Antigüedad: 22 años, 9 meses
Puntos: 0
conexiones...

Hola a todos, tengo una pregunta y me gustaria saber si estoy haciendo bien esto, en cada pagina que tengo hago conexion con la base de datos porque me traigo diferentes datos, o se graban datos nuevos, mi pregunta es si esta bien hecho que cada vez que vaya a ejecutar traerme algo tengo que expecificar la conexión ejemplo
Código:
	Dim con	
	Dim rs	
	Dim rs1
	Dim sql				
        Dim sql1

	set con = server.CreateObject("ADODB.Connection")	
	con.Open "DRIVER=SQL Server;SERVER=Servidor;UID=user;PWD=user;APP=ReqIntegra;WSID=EHP135446;DATABASE=ReqIntegra"	

	sql = "spRequerimientos 5,'' " 
        sql1 = "spUsuarios 3"

	set rs = server.CreateObject "ADODB.Recordset")
        set rs1 = server.CreateObject "ADODB.Recordset")

	rs.Open  sql, con	
        rs1.open sql1, con	  
          'se hace lo que se tiene que hacer
       rs.close
       set rs = nothing
       rs1.close
       set rs1 = nothing
       con.close
       set con = nothing
y si tengo n rs entonces hago lo mismo, no se si haya una manera de abrir la conexion una sola vez, esto es porque estoy en profile de sql y veo que se abre y se cierra la conexon n veces.
Espero haberme explicado
Gracias a todos :)
  #2 (permalink)  
Antiguo 14/08/2002, 17:08
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: conexiones...

Hola:

En algunas aplicaciones sobretodo cliente/servidor cuyo contexto incluia pocos usuarios se acostumbraba a abrir una conexión y manternla abierta mientras duraba la ejecución de la misma; aqui no habia problemas de performance porque el número de conexiones abiertas simultaneamente no sobrepasaba el limite aceptado para la bd; con el advenimiento de internet y creación de aplicaciones para este entorno el número de usuarios crecio exponecialmente, por lo tanto el número de conexiones usadas creceria en la misma medida si es que se mantiene una conexión abierta por cliente, por lo que la performance decaeria ostensiblemente. Existen una regla de oro en aplicaciones internet "usa los recursos lo mas tarde posible y liberalos lo antes posible", esto implica abrir una conexión solo cuando lo necesites y cerrarlos inmediatamentos despues de utilizarlos. Quizas creas que haya perdida de performance al abrir y cerrar las conexiones, pero no te preocupes pues existe algo llamado "pool de conexiones" que mantiene una cola de conexiones abiertas y entregandoselas a los clientes (en este caso páginas asp) que lo requieran ahorrando el tiempo de establecimiento de conexión .

Conclusión: Esta bien que abras y cierres conexión por página.

saludos!!
  #3 (permalink)  
Antiguo 14/08/2002, 17:14
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: conexiones...

Hola:

Para evitar que siempre estes declarando la cadena de conexión podrias utilizar una variables de applicaciones y almecenarla, para luego llamarla desde cualquier página.

en el evento de inicio de aplicacion dentro del global.asa inicializa la cadena de conexion.

Sub Application_OnStart
'**Inserte el código aquí **
Application("strConecction")="caden a de conexión"
End Sub

saludos!!
  #4 (permalink)  
Antiguo 15/08/2002, 08:12
 
Fecha de Ingreso: julio-2002
Mensajes: 60
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: conexiones...

Gracias Henryzs, tengo otra pregunta con lo de la variable que mencionas, nunca he utilizado el global.asa, como la mando llamar desde mis paginas??

Gracias de nuevo en verdad todos son muy buena onda :)
  #5 (permalink)  
Antiguo 15/08/2002, 11:04
 
Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: conexiones...

Hola:

el global.asa es un archivo especial que se crea en la raiz de la aplicación donde se definen rutinas asociadas a los eventos de inicio y fin de sesion y aplicación.
Un evento de inicio de sesión se ejecuta cada vez que un usuario inicia una sesión y el evento de fin de sesión cuando el usuario finaliza explicitamente su sesión o transcurre un tiempo sin que el usuario haya realizado algun requerimiento al servidor.
web. Una evento de inicio de aplicación se ejecuta la primera vez que un usuario inicia una sesión (no necesariamente cuando ingrese a tu aplicación)y termina cuando no existan mas sesiones en la aplicación.
Las variables de sesión tiene como contexto la sesión del usuario y solo pueden ser accedidas por él desde cualquier página. Una variable de aplicación tiene como contexto toda la aplicación y puede ser accedida desde cualquier sesión.

Se acostumbre usar variables de sesión para almacenar datos relativos exclusivamente a un usuario (nombres, codigos, etc) y variables de aplicación para almacenar datos relativos a toda la aplicación (cadena de conexión a bd, número de usuarios activos, número de visitantes, etc).

Estas se manejan como cualquier variable, es decir,
para inicializarlas:
Session("User")="Henry"
Application("Conexion")="Dsn=dsnTie nda"

y para leerlas:
response.write "El usuario es " & Session("User")
response.write "la cadena de conexion es " & Application("Conexion")

saludos!!
  #6 (permalink)  
Antiguo 15/08/2002, 16:49
 
Fecha de Ingreso: julio-2002
Mensajes: 60
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: conexiones...

Gracias Henryzs, tu explicación ha sido muy buena pero solo para ver si no estoy mal, tengo en el global.asa
Código:
		Application("ReqIntegra_ConnectionString") = "cadenaconexio"
y donde lo uso pongo esto:

Código:
 
strCadenaConexion = Application("ReqIntegra_ConnectionString")

set con = server.CreateObject("ADODB.Connection")	

con.Open strCadenaConexion

set rs = server.CreateObject ("ADODB.Recordset")
		
rs.Open  sql, con
y asi en todos lados que uso esto?

Gracias por tu ayuda :)
  #7 (permalink)  
Antiguo 15/08/2002, 16:59
 
Fecha de Ingreso: mayo-2002
Ubicación: Mexico DF
Mensajes: 119
Antigüedad: 23 años
Puntos: 0
Re: conexiones...

Hola, estaba viendo tu codigo y veo que ejecutas dos SP, si no necesitas traerte los datos de la BD, y solo efectuas algunas intrucciones dentro del servidor los recordsets salen sobrabdo te explico:
Tu tienes esto:

sql = "spRequerimientos 5,'' "
sql1 = "spUsuarios 3"

set rs = server.CreateObject "ADODB.Recordset")
set rs1 = server.CreateObject "ADODB.Recordset")

rs.Open sql, con
rs1.open sql1, con
'se hace lo que se tiene que hacer
rs.close
set rs = nothing
rs1.close
set rs1 = nothing
con.close
set con = nothing

Lo cual lo podemos reducir a esto

sql = "spRequerimientos 5,'' "
conn.Execute(sql)

'Aqui hace lo que tiene que hacer
sql1 = "spUsuarios 3"
conn.Execute(sql)
'Aqui hace lo que tiene que hacer

Y si necesitas usar Recordset lo puedes hacer asi
Set Rs = Server.Crea.....................

sql = "spRequerimientos 5,'' "
RS.Open Sql, conn
'Hace lo que tiene que hacer
Rs.Close

sql = "spUsuarios 3"
Rs.Open,sql,conn
'Aqui hace lo que tiene que hacer
Y si observas solo utilizas una variable para SQL y otra para el RS, espero me halla explicado

Saludos
  #8 (permalink)  
Antiguo 16/08/2002, 09:07
 
Fecha de Ingreso: julio-2002
Mensajes: 60
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: conexiones...

Gracias Vic, te cuento que tengo poquito con esto de las ASP por lo que pues bien bien no se, hago esto porque al principio de mi pagina pongo todo el codigo de asp y despues ya pongo lo de html, uso los rs para cargar catalogos, pero no se si este bien o se vea bien poner entre el codigo de html codigo de asp, yo vengo de programar en VB por lo que creo que traigo ese tipo de programacion, si me dices que no hay problema, pues cambio mi codigo y esta mejor asi como me dices no?

Gracias por su ayuda en verdad son tips que me ayudan a aprender mas :)
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 10:00.