SlideShare una empresa de Scribd logo
1 de 14
ACCESO A BASE DE DATOS
ActiveX Data Objects (ADO) es una tecnología ampliable y de fácil uso para agregar a sus páginas
Web acceso a bases de datos. Puede utilizar ADO para escribir secuencias de comandos compactas y
escalables que le permitan conectarse a orígenes de datos compatibles con OLE DB, como bases de
datos, hojas de cálculo, archivos de datos secuenciales o directorios de correo electrónico. OLE DB
es una interfaz de programación de nivel de sistema que proporciona un conjunto estándar de
interfaces COM para que permitan exponer las funciones del sistema de administración de bases de
datos. Con el modelo de objetos ADO es fácil tener acceso a estas interfaces (mediante lenguajes de
secuencias de comandos, como VBScript o JScript) para agregar funciones de bases de datos a las
aplicaciones Web. Además, también puede utilizar ADO para tener acceso a bases de datos
compatibles con Conectividad abierta de bases de datos (ODBC, Open Database Connectivity).
Si no tiene mucha experiencia en conectividad con bases de datos, encontrará que la sintaxis de
ADO es sencilla y fácil de utilizar. Si es un programador experimentado, agradecerá el acceso
escalable de alto rendimiento que proporciona ADO para una gran variedad de orígenes de datos.
Para obtener más información acerca de ADO, visite el sitio Web Microsoft Universal Data Access
(UDA).

Crear una cadena de conexión
El primer paso en la creación de una aplicación de datos en Web consiste en proporcionar un
método para que ADO encuentre e identifique el origen de datos. Para ello se utiliza una cadena de
conexión, una serie de argumentos separados mediante un punto y coma que definen parámetros
como el proveedor del origen de datos y la ubicación del mismo. ADO utiliza la cadena de conexión
para identificar el proveedor OLE DB y para dirigir al proveedor al origen de datos. El proveedor es
un componente que representa el origen de datos y que expone la información en la aplicación en
forma de conjuntos de filas.
En la tabla siguiente se enumeran las cadenas de conexión de OLE DB para varios orígenes de datos
habituales:

Origen de datos

Cadena de conexión OLE DB

Microsoft®
Access

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ruta de
acceso física al archivo .mdb

Microsoft SQL
Server

Provider=SQLOLEDB.1;Data Source=ruta de acceso a
la base de datos del servidor

Oracle

Provider=MSDAORA.1;Data Source=ruta de acceso a la
base de datos del servidor

Microsoft
Provider=MSIDXS.1;Data Source=ruta de acceso al
Indexing Service archivo
Para proporcionar compatibilidad con versiones anteriores, el proveedor OLE DB para ODBC
admite la sintaxis de las cadenas de conexión ODBC. En la tabla siguiente se enumeran las cadenas
de conexión ODBC que se utilizan habitualmente:
Controlador del
origen de datos

Cadena de conexión ODBC

Microsoft Access

Driver={Microsoft Access Driver
(*.mdb)};DBQ=ruta de acceso física al archivo .mdb

SQL Server

DRIVER={SQL Server};SERVER=ruta de acceso al
servidor

Oracle

DRIVER={Microsoft ODBC for
Oracle};SERVER=ruta de acceso al servidor

Microsoft Excel

Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta
de acceso física al archivo .xls; DriverID=278

Microsoft Excel 97

Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta
de acceso física al archivo .xls;DriverID=790

Paradox

Driver={Microsoft Paradox Driver
(*.db)};DBQ=ruta de acceso física al archivo
.db;DriverID=26

Texto

Driver={Microsoft Text Driver
(*.txt;*.csv)};DefaultDir=ruta de acceso física al
archivo .txt

Microsoft Visual
FoxPro® (con un
contenedor de bases
de datos)

Driver={Microsoft Visual FoxPro
Driver};SourceType=DBC;SourceDb=ruta de acceso
física al archivo .dbc

Microsoft Visual
FoxPro (sin un
contenedor de bases
de datos)

Driver={Microsoft Visual FoxPro
Driver};SourceType=DBF;SourceDb=ruta de acceso
física al archivo .dbf

Nota: Las cadenas de conexión que utilizan una ruta UNC para hacer referencia a un origen de
datos que se encuentre en un equipo remoto pueden suponer un problema de seguridad
potencial. Para evitar el acceso no autorizado al origen de datos, cree una cuenta de Windows
para aquellos equipos que necesiten tener acceso a los datos y aplique los permisos NTFS
adecuados al origen de datos. Para obtener más información, consulte Proteger los archivos
mediante NTFS.
Aspectos avanzados que se deben tener en cuenta al diseñar aplicaciones de datos Web
Por razones de rendimiento y confiabilidad, se recomienda encarecidamente que se utilice un motor
de base de datos cliente-servidor para el despliegue de aplicaciones Web controladas por datos que
requieran una elevada demanda de accesos por parte de más de 10 usuarios simultáneos. Si bien
ADO funciona con cualquier base de datos compatible con OLE DB, se ha probado y está diseñado
para funcionar con bases de datos cliente-servidor como Microsoft SQL Server u Oracle.
ASP acepta bases de datos de archivos compartidos (Microsoft Access o Microsoft FoxPro) como
orígenes válidos de datos. Aunque algunos ejemplos de la documentación de ASP utilizan una base
de datos de archivos compartidos, se recomienda utilizar estos tipos de motores de bases de datos
únicamente con fines de desarrollo o en situaciones de despliegue limitado. Las bases de datos de
archivos compartidos pueden no ser tan adecuadas como las bases de datos cliente-servidor para
aplicaciones Web de producción muy exigentes.
Si va a desarrollar una aplicación ASP de base de datos diseñada para conectarse a una base de
datos remota de SQL Server, debe tener en cuenta también los aspectos siguientes:
Elegir el esquema de conexión para SQL Server Puede elegir entre los métodos Sockets TCP/IP y
Canalizaciones con nombre para tener acceso a bases de datos remotas de SQL Server. Con
Canalizaciones con nombre, los clientes de la base de datos tienen que estar autenticados por
Windows antes de establecer una conexión, dejando la posibilidad de que un equipo remoto que
ejecute canalizaciones con nombre pueda denegar el acceso a un usuario que tenga las credenciales
apropiadas de acceso a SQL Server, pero no tenga una cuenta de usuario de Windows en dicho
equipo. Como alternativa, las conexiones que utilizan Sockets TCP/IP se conectan directamente al
servidor de la base de datos, sin conectarse a través de un equipo intermediario (como es el caso de
Canalizaciones con nombre). Como las conexiones establecidas mediante Sockets TCP/IP se
conectan directamente al servidor de la base de datos, los usuarios pueden tener acceso mediante la
autenticación de SQL Server, no mediante la autenticación de Windows.
Error ODBC 80004005 Si el esquema de conexión para tener acceso a SQL Server no está
correctamente configurado, los usuarios que vean la aplicación de base de datos podrían recibir el
mensaje de error ODBC 80004005. Para corregir la situación, intente utilizar una conexión local de
canalización con nombre en lugar de una conexión de red de canalización con nombre si SQL Server
se ejecuta en el mismo equipo que IIS. Las reglas de seguridad de Windows XP no se utilizarán de
forma obligatoria, ya que la canalización es una conexión local, en lugar de una conexión de red, a la
que puede representar la cuenta de usuario anónimo. Además, en la cadena de conexión de SQL
Server (ya sea en el archivo Global.asa, ya en una secuencia de comandos de una página), debe
cambiar el parámetro SERVER=nombre del servidor por SERVER=(local). La palabra clave (local)
es un parámetro especial que reconoce el controlador ODBC de SQL Server. Si esta solución no
funciona, pruebe a utilizar un protocolo no autenticado entre IIS y SQL Server, como los sockets
TCP/IP. Este protocolo funcionará si SQL Server se ejecuta de forma local o en un equipo remoto.
Nota Para aumentar el rendimiento en la conexión con bases de datos remotas, utilice Sockets
TCP/IP.
Seguridad de SQL Server Si utiliza las características de seguridad integradas o mixtas de SQL
Server y la base de datos se encuentra en un servidor remoto, no podrá utilizar la autenticación de
Windows integrada. Específicamente, no puede reenviar credenciales de autenticación de Windows
integrada al equipo remoto. Esto significa que quizá tenga que utilizar la autenticación básica, que
se basa en que el usuario proporcione la información del nombre de usuario y la contraseña.
Para obtener más información acerca de estos aspectos, visite el sitio Web de Microsoft Product
Support Services.
Conectarse al origen de datos
ADO proporciona el objeto Connection para establecer y administrar las conexiones entre las
aplicaciones y los orígenes de datos compatibles con OLE DB o las bases de datos compatibles con
ODBC. El objeto Connection incorpora propiedades y métodos que se pueden utilizar para abrir y
cerrar conexiones con bases de datos, y para enviar consultas de actualización de la información.
Para establecer una conexión con una base de datos, cree primero una instancia del objeto
Connection. Por ejemplo, la secuencia de comandos siguiente crea una instancia del objeto
Connection y procede a abrir una conexión:
<%
'Crea un objeto Connection.
Set cn = Server.CreateObject("ADODB.Connection")
'Abre una conexión mediante la cadena de conexión OLE DB.
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosMercadoVentasPrevistas.mdb"
%>
Nota: La cadena de conexión no contiene espacios en blanco ni antes ni después del signo igual (=).
En este caso, el método Open del objeto Connection se refiere a la cadena de conexión.
Ejecutar consultas SQL con el objeto Connection
Con el método Execute del objeto Connection puede emitir comandos al origen de datos, como
consultas de SQL (Lenguaje de consulta estructurado). (SQL, lenguaje estándar para comunicarse
con bases de datos, define comandos para recuperar y actualizar información.) El método Execute
acepta parámetros que especifiquen el comando (o la consulta), el número de registros de datos a
los que afecta y el tipo de comando que se utiliza.
La siguiente secuencia de comandos utiliza el método Execute para enviar una consulta con un
comando INSERT de SQL, que inserta datos en una tabla concreta de la base de datos. En este caso,
el bloque de la secuencia de comandos inserta el nombre José Lugo en una tabla de la base de datos
llamada Customers.
<%
'Define la cadena de conexión OLE DB.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosEmpleados.mdb"
'Crea la instancia del objeto Connection y abre una conexión con la base de datos.
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Define la instrucción SELECT de SQL.
strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('José','Lugo')"
'Utiliza el método Execute para enviar una consulta SQL a la base de datos.
cnn.Execute strSQL,,adCmdText + adExecuteNoRecords
%>
Observe que se especifican dos parámetros en la instrucción que se utiliza para ejecutar la consulta:
adCmdText y adExecuteNoRecords. El parámetro opcional adCmdText especifica el tipo de
comando e indica que el proveedor debe evaluar la instrucción de consulta (en este caso, una
consulta SQL) como una definición textual de un comando. El parámetro adExecuteNoRecords
indica a ADO que no debe crear un conjunto de registros de datos si no se devuelven resultados a la
aplicación. Este parámetro sólo funciona con los tipos de comandos definidos como texto, como las
consultas SQL, o con procedimientos almacenados de bases de datos. Aunque los parámetros
adCmdText y adExecuteNoRecords son opcionales, debe especificarlos al utilizar el método Execute
para mejorar así el rendimiento de la aplicación de datos.
Importante Los parámetros ADO, como adCmdText, deben estar definidos para poder utilizarlos en
una secuencia de comandos. Un método cómodo para definir los parámetros consiste en utilizar una
biblioteca de tipos de componentes, que es un archivo que contiene definiciones para todos los
parámetros ADO. Para implementar una biblioteca de tipos de componentes debe declararla antes.
Agregue la etiqueta siguiente <METADATA> al archivo .asp o a Global.asa para declarar la
biblioteca de tipos ADO:
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib"
UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
Si desea obtener más detalles acerca de cómo implementar las bibliotecas de tipos de componentes,
consulte la sección Utilizar constantes del tema Utilizar variables y constantes.
Además del comando INSERT de SQL, puede utilizar los comandos UPDATE y DELETE de SQL
para modificar y quitar información de la base de datos.
Con el comando UPDATE de SQL puede modificar los valores de los elementos de una tabla de la
base de datos. La siguiente secuencia de comandos usa el comando UPDATE para cambiar todos los
campos FirstName de la tabla Customers a Juan en todas las filas cuyo campo LastName contenga
el apellido Soto.
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb"
cn.Execute "UPDATE Customers SET FirstName = 'Juan' WHERE LastName = 'Soto' ",,adCmdText
+ adExecuteNoRecords
%>
Para quitar determinados registros de una tabla de la base de datos, utilice el comando DELETE de
SQL. La siguiente secuencia de comandos quita todas las filas de la tabla Customers cuyo apellido
sea Soto:
<%
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Soto'",,adCmdText +
adExecuteNoRecords
%>
Nota: Debe tener mucho cuidado al utilizar el comando DELETE de SQL. Un comando DELETE que
no vaya acompañado de una cláusula WHERE eliminará todas las filas de la tabla. Asegúrese de
incluir la cláusula WHERE de SQL, que especifica las filas exactas que se van a eliminar.
Utilizar el objeto Recordset para manipular los resultados
Para recuperar datos, examinar resultados y modificar su base de datos, ADO proporciona el objeto
Recordset. El objeto Recordset tiene las funciones necesarias para, dependiendo de las restricciones
de las consultas, recuperar y presentar un conjunto de filas, o registros, de una base de datos. El
objeto Recordset mantiene la posición de cada registro devuelto por la consulta, lo que permite
recorrer los resultados de uno en uno.
Recuperar un conjunto de registros
Las buenas aplicaciones de datos Web emplean el objeto Connection para establecer un vínculo, y el
objeto Recordset para manipular los datos devueltos. Al combinar las funciones especializadas de
ambos objetos puede desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de
tratamiento de datos. Por ejemplo, la siguiente secuencia de comandos del servidor utiliza el objeto
Recordset para ejecutar un comando SELECT de SQL. El comando SELECT recupera un conjunto
específico de información basándose en las restricciones de la consulta. La consulta también
contiene una cláusula WHERE de SQL, que se utiliza para establecer el criterio de selección de la
consulta. En este ejemplo, la cláusula WHERE limita la consulta a todos los registros que contengan
el apellido Soto en la tabla Customers de la base de datos.
<%
'Establece una conexión con un origen de datos.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosEmpleados.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea una instancia de un objeto Recordset.
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
'Abre un objeto Recordset con el método Open
'y utiliza la conexión establecida por el objeto Connection.
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' "
rstCustomers.Open strSQL, cnn
'Recorre el conjunto de los registros y presenta los resultados
'e incrementa la posición del registro con el método MoveNext.
Set objFirstName = rstCustomers("Nombre")
Set objLastName = rstCustomers("Apellido")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rstCustomers.MoveNext
Loop
%>
Observe que en el ejemplo anterior, el objeto Connection estableció la conexión con la base de datos
y que el objeto Recordset utilizó la misma conexión para recuperar resultados de la base de datos.
Este método es útil cuando tenga que configurar con precisión la forma en que se establece el
vínculo con la base de datos. Por ejemplo, si necesitara especificar el tiempo de espera antes de
anular un intento de conexión, tendría que utilizar el objeto Connection para establecer dicha
propiedad. Sin embargo, si sólo desea establecer una conexión con las propiedades de conexión
predeterminadas de ADO, podría utilizar el método Open del objeto Recordset para establecer el
vínculo:
<%
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosEmpleados.mdb"
strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' "
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
'Abre una conexión con el método Open
'y utiliza la conexión establecida por el objeto Connection.
rstCustomers.Open strSQL, strConnectionString
'Recorre el conjunto de registros, presenta los resultados
'e incrementa la posición del registro con el método MoveNext.
Set objFirstName = rstCustomers("Nombre")
Set objLastName = rstCustomers("Apellido")
Do Until rstCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rstCustomers.MoveNext
Loop
%>
Cuando establece una conexión con el método Open del objeto Recordset, está utilizando
implícitamente el objeto Connection para proteger el vínculo. Para obtener más información,
consulte la documentación acerca de Microsoft ActiveX Data Objects (ADO), disponible en el sitio
Web de Microsoft Universal Data Access.
Nota Para mejorar de forma significativa el rendimiento de las aplicaciones ASP de base de datos,
piense en la posibilidad de cambiar el estado del conjunto de registros a Application. Para obtener
más información, consulte Guardar datos en la memoria caché.
A menudo resulta útil contar el número de registros que se devuelven en un conjunto de registros.
El método Open del objeto Recordset permite especificar un parámetro opcional, cursor, que
determina cómo recupera y recorre el conjunto de registros el proveedor subyacente. Al agregar el
parámetro de cursor adOpenKeyset a la instrucción que se utiliza para ejecutar la consulta, permite
que la aplicación cliente recorra todo el conjunto de registros. Como resultado, la aplicación puede
utilizar la propiedad RecordCount para calcular con precisión el número de registros del conjunto.
Vea el siguiente ejemplo:
<%
Set rsCustomers = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM NewOrders", "Provider=Microsoft.Jet.OLEDB.3.51;Data
Source='C:PedidosClientesPedidos.mdb'", adOpenKeyset, adLockOptimistic, adCmdText
'Utiliza la propiedad RecordCount del objeto Recordset para realizar la cuenta.
If rs.RecordCount >= 5 then
Response.Write "Recibimos estos " & rs.RecordCount & " nuevos pedidos<BR>"
Do Until rs.EOF
Response.Write rs("NombreCliente") & " " & rs("ApellidoCliente") & "<BR>"
Response.Write rs("NumeroCuenta") & "<BR>"
Response.Write rs("Cantidad") &"<BR>"
Response.Write rs("FechaEntrega") & "<BR>BR<>"
rs.MoveNext
Loop
Else
Response.Write "Hay menos de " & rs.RecordCount & " nuevos pedidos."
End If
rs.Close
%>
Mejorar las consultas con el objeto Command
Con el objeto Command de ADO puede ejecutar consultas de la misma forma que con los objetos
Connection y Recordset, la diferencia está en que con el objeto Command puede preparar, o
compilar, la consulta con el origen de la base de datos y después enviar la misma consulta
repetidamente con distintos valores. La ventaja de compilar consultas de esta manera consiste en la
enorme reducción del tiempo necesario para volver a enviar las modificaciones de una consulta
existente. Además, puede dejar las consultas SQL parcialmente indefinidas, con la posibilidad de
alterar partes de las consultas justo antes de su ejecución.
La colección Parameters del objeto Command le ahorra los problemas de tener que volver a
construir la consulta cada vez que tenga que ejecutarla. Por ejemplo, si tiene que actualizar
periódicamente la información de suministros y costos en un sistema de inventario Web, puede
predefinir su consulta de la siguiente manera:
<%
'Abre una conexión mediante el objeto Connection. Observe que el objeto Command
'no tiene un método Open para establecer la conexión.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosInventario.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea el objeto Command; utiliza la propiedad ActiveConnection para
'la conexión al objeto Command.
Set cm= Server.CreateObject("ADODB.Command")
Set cmn.ActiveConnection = cnn
'Define la consulta SQL.
cm.CommandText = "INSERT INTO Inventory (Material, Cantidad) VALUES (?, ?)"
'Guarda una versión preparada (o precompilada) de la consulta especificada en la propiedad
'CommandText antes de la primera ejecución del objeto Command.
cmn.Prepared = True
'Define la información de configuración de los parámetros de la consulta.
cmn.Parameters.Append cmn.CreateParameter("material_type",adVarChar, ,255 )
cmn.Parameters.Append cmn.CreateParameter("quantity",adVarChar, ,255 )
'Define y ejecuta la primera inserción.
cmn("material_type") = "bombillas"
cmn("quantity") = "40"
cmn.Execute ,,adCmdText + adExecuteNoRecords
'Define y ejecuta la segunda inserción.
cmn("material_type") = "fusibles"
cmn("quantity") = "600"
cmn.Execute ,,adCmdText + adExecuteNoRecords
%>
Importante Los parámetros ADO, como adCmdText, no son más que variables, lo que signifique que
para utilizarlos en una secuencia de comandos de acceso a datos es necesario definir su valor.
Puesto que ADO utiliza gran número de parámetros, es más fácil definirlos mediante una biblioteca
de tipos de componentes, un archivo que contiene definiciones de todos los parámetros y constantes
ADO. Si desea obtener más detalles acerca de cómo implementar las bibliotecas de tipos ADO,
consulte la sección Utilizar constantes del tema Utilizar variables y constantes.
En el ejemplo anterior, observará que la secuencia de comandos vuelve a construir repetidamente y
envía una consulta SQL con distintos valores, sin tener que volver a definir y enviar la consulta al
origen de datos. Compilar consultas con el objeto Command también le ofrece la ventaja de evitar
los problemas que pudieran provenir de concatenar cadenas y variables para formar consultas SQL.
En particular, si utiliza la colección Parameter del objeto Command, puede evitar problemas
relacionados con la definición de ciertos tipos de variables de cadenas, fechas y horas. Por ejemplo,
los valores de las consultas SQL que contengan apóstrofos (') pueden hacer que la consulta falle:
strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Roberto','O'Hara')"
Observe que el apellido O'Hara contiene un apóstrofo que entra en conflicto con los apóstrofos que
se utilizan como delimitadores de datos en la palabra clave VALUES de SQL. Si enlaza el valor de la
consulta como un parámetro del objeto Command, se evitan este tipo de problemas.
Combinar formularios HTML y el acceso a bases de datos
Las páginas Web que contienen formularios HTML pueden permitir que los usuarios consulten de
forma remota una base de datos y recuperen información concreta. Con ADO puede crear
secuencias de comandos sorprendentemente sencillas que recopilen información del formulario del
usuario, creen una consulta personalizada para la base de datos y devuelvan información al usuario.
Mediante el objeto Request de ASP puede recuperar la información escrita en los formularios
HTML e incorporar dicha información a sus instrucciones SQL. Por ejemplo, el siguiente bloque de
secuencia de comandos inserta en una tabla la información suministrada por un formulario HTML.
La secuencia de comandos recopila información del usuario con la colección Form del objeto
Request.
<%
'Abre una conexión mediante el objeto Connection. El objeto Command
'no tiene un método Open para establecer la conexión.
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:CatálogoSemillas.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
'Crea una instancia del objeto Command
'y utiliza la propiedad ActiveConnection para adjuntar
'la conexión al objeto Command.
Set cm= Server.CreateObject("ADODB.Command")
Set cmn.ActiveConnection = cnn
'Define la consulta SQL.
cmn.CommandText = "INSERT INTO MySeedsTable (Type) VALUES (?)"
'Define la información de configuración de los parámetros de la consulta.
cmn.Parameters.Append cmn.CreateParameter("type",adVarChar, ,255)
'Asigna el valor de la entrada y ejecuta la actualización.
cmn("type") = Request.Form("SeedType")
cmn.Execute ,,adCmdText + adExecuteNoRecords
%>
Para obtener más información acerca de los formularios y el uso del objeto Request de ASP,
consulte Procesar los datos introducidos por el usuario.
Administrar las conexiones con bases de datos
Uno de los mayores retos del diseño de una aplicación Web sofisticada de base de datos, como una
aplicación de entrada de pedidos en línea que atienda a miles de clientes, es la correcta
administración de las conexiones con la base de datos. Abrir y mantener las conexiones con las
bases de datos, incluso cuando no se transmita información, puede afectar severamente a los
recursos del servidor de base de datos y provoca problemas de conectividad. Las aplicaciones Web
de bases de datos bien diseñadas reciclan las conexiones con la base de datos y compensan los
retrasos debidos al tráfico de la red.
Abandonar los intentos de conexión
Un servidor de base de datos que experimente un repentino incremento en su actividad puede
quedar saturado en sus conexiones, lo que incrementa considerablemente el tiempo necesario para
establecer una nueva conexión. Como resultado, los retrasos excesivos en la conexión pueden
reducir el rendimiento de su aplicación de base de datos.
Con la propiedad ConnectionTimeout del objeto Connection puede limitar la cantidad de tiempo
que su aplicación espera antes de abandonar un intento de conexión y emitir un mensaje de error.
Por ejemplo, la siguiente secuencia de comandos establece la propiedad ConnectionTimeout para
esperar veinte segundos antes de cancelar el intento de conexión:
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.ConnectionTimeout = 20
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosInventario.mdb"

El valor predeterminado de la propiedad ConnectionTimeout es 30 segundos.
Nota Antes de incorporar la propiedad ConnectionTimeout a sus aplicaciones de bases de datos,
asegúrese de que su proveedor de conexiones y el origen de datos acepten esta propiedad.
Agrupar conexiones
La agrupación de conexiones permite que la aplicación Web utilice una conexión de un grupo o de
una reserva de conexiones libres que no es necesario establecer de nuevo. Tras crear una conexión y
colocarla en un grupo, la aplicación la utiliza de nuevo sin necesidad de realizar el proceso de
conexión. Así se puede obtener una importante ganancia de rendimiento, en especial si la aplicación
se conecta a través de una red o se conecta y desconecta repetidamente. Además, una conexión
agrupada la pueden utilizar varias aplicaciones.
Agrupación de sesiones OLE DB
OLE DB tiene una característica de agrupación, llamada agrupación de sesiones, optimizada para
mejorar el rendimiento de conectividad en grandes aplicaciones Web de bases de datos. La
agrupación de sesiones mantiene la seguridad de la conexión y otras propiedades. Una conexión
agrupada sólo se utiliza de nuevo si ambos lados de la conexión realizan peticiones que coinciden.
De forma predeterminada, los proveedores OLE DB de Microsoft SQL Server y Oracle admiten la
agrupación de sesiones. Esto quiere decir que no es necesario configurar la aplicación, el servidor o
la base de datos para utilizar la agrupación de sesiones. Sin embargo, si el proveedor no es
compatible con la agrupación de sesiones, necesitará crear una entrada en el registro para habilitar
esta característica. Si desea obtener más información acerca de la agrupación de sesiones, consulte
la documentación de OLE DB 2.0 Software Development Kit (SDK) .
Agrupación de sesiones ODBC
Si desea que su controlador ODBC participe en la agrupación de conexiones, debe configurar su
controlador específico de base de datos y después establecer la propiedad CPTimeout del
controlador en el registro del sistema de Windows. La propiedad CPTimeout determina el período
de tiempo de inactividad que una conexión puede permanecer en la agrupación de conexiones. Si la
conexión permanece en el grupo durante un período de tiempo mayor que el establecido en
CPTimeout, la conexión se cierra y se quita del grupo. El valor predeterminado de CPTimeout es 60
segundos.
Puede establecer selectivamente la propiedad CPTimeout para permitir la agrupación de conexiones
por cada controlador específico de base de datos ODBC si crea una entrada en el registro del sistema
con los siguientes valores:
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIcontroladorCPTimeout =
timeout
(REG_SZ, en segundos)

Por ejemplo, la clave siguiente establece el tiempo de inactividad del grupo de conexiones en 180
segundos (3 minutos) para el controlador de SQL Server.
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL ServerCPTimeout = 180
Nota De forma predeterminada, su servidor Web activa el grupo de conexiones para SQL Server y
asigna a CPTimeout 60 segundos.
Utilizar conexiones entre varias páginas
Aunque puede volver a utilizar una conexión entre varias páginas si almacena la conexión en el
objeto Application de ASP, al hacerlo puede mantener abierta una conexión de forma innecesaria,
despreciando así las ventajas del grupo de conexiones. Si tiene muchos usuarios que necesitan
conectarse a la misma aplicación de base de datos ASP, es mejor volver a utilizar la cadena de
conexión con la base de datos en varias páginas Web guardando dicha cadena en el objeto
Application de ASP. Por ejemplo, puede especificar una cadena de conexión en el procedimiento de
evento Application_OnStart del archivo Global.asa, como en la siguiente secuencia de comandos:

Application("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosInventario.mdb"

Después, en cada archivo ASP que tenga acceso a la base de datos, puede escribir
<OBJECT RUNAT=SERVER ID=cnn PROGID="ADODB.Connection"></OBJECT>
para crear una instancia del objeto Connection para la página y utilizar la secuencia de comandos
cnn.Open Application("ConnectionString")
para abrir la conexión. Al final de la página, la conexión se cierra con
cnn.Close
En caso de que un usuario individual vuelva a necesitar una conexión en otras páginas Web, puede
que le interese utilizar el objeto Session en lugar del objeto Application para almacenar la cadena de
conexión.
Cerrar las conexiones
Para hacer el mejor uso del grupo de conexiones, cierre explícitamente las conexiones con las bases
de datos lo antes posible. De forma predeterminada, una conexión termina cuando termina de
ejecutarse su secuencia de comandos. Sin embargo, al cerrar explícitamente una conexión en la
secuencia de comandos cuando ya no sea necesaria, se reduce la carga del servidor de base de datos
y se deja la conexión disponible para otros usuarios.
Puede utilizar el método Close del objeto Connection para terminar explícitamente una conexión
entre el objeto Connection y la base de datos. La siguiente secuencia de comandos abre y cierra una
conexión:
<%
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:DatosInventario.mdb"
Set cn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnectionString
cnn.Close
%>

Más contenido relacionado

La actualidad más candente

Ochoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosOchoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosRaquel Ochoa
 
Base de datos
Base de datos Base de datos
Base de datos Aylin1502
 
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...Yamil Lambert
 
Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Andreiitah Puliido
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentesrulascch
 
Nelson chavez base de datos
Nelson chavez base de datosNelson chavez base de datos
Nelson chavez base de datosNelson Chavez
 
ConexióN De Base De Datos
ConexióN De Base De DatosConexióN De Base De Datos
ConexióN De Base De DatosVerenice Corea
 
Presentación1 bases de datos
Presentación1 bases de datosPresentación1 bases de datos
Presentación1 bases de datosAurora Fuentes
 

La actualidad más candente (20)

Ado net
Ado netAdo net
Ado net
 
ADO .NET
ADO .NETADO .NET
ADO .NET
 
Diapositivas de ado.net
Diapositivas de ado.netDiapositivas de ado.net
Diapositivas de ado.net
 
Exposicion oracle
Exposicion oracleExposicion oracle
Exposicion oracle
 
OLE BD
OLE BDOLE BD
OLE BD
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Ochoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datosOchoa ornelas raquel_acceso a una base de datos
Ochoa ornelas raquel_acceso a una base de datos
 
Base de datos
Base de datos Base de datos
Base de datos
 
desarrollo en 3 capas VB
desarrollo en 3 capas VBdesarrollo en 3 capas VB
desarrollo en 3 capas VB
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Sql Server
Sql ServerSql Server
Sql Server
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...
Administración y Programación microsoft SQL Server 2008 por Yamil Lambert Sar...
 
Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012Libro introduccion SQL Server Express Edition 2012
Libro introduccion SQL Server Express Edition 2012
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Base de datos
Base de datosBase de datos
Base de datos
 
Nelson chavez base de datos
Nelson chavez base de datosNelson chavez base de datos
Nelson chavez base de datos
 
ConexióN De Base De Datos
ConexióN De Base De DatosConexióN De Base De Datos
ConexióN De Base De Datos
 
Presentación1 bases de datos
Presentación1 bases de datosPresentación1 bases de datos
Presentación1 bases de datos
 
Base de Datos1
Base de Datos1Base de Datos1
Base de Datos1
 

Similar a Acceso a base de datos (20)

Conexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBCConexión a SQL Server con C#.NET a través de ODBC
Conexión a SQL Server con C#.NET a través de ODBC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
JDBC
JDBCJDBC
JDBC
 
Base de Datos Desde Visual Basic 6.0
Base de Datos Desde Visual Basic 6.0Base de Datos Desde Visual Basic 6.0
Base de Datos Desde Visual Basic 6.0
 
Modo conexion
Modo conexionModo conexion
Modo conexion
 
Utilizaciòn de base de datos externas en arcgis.
Utilizaciòn de base de datos externas en arcgis.Utilizaciòn de base de datos externas en arcgis.
Utilizaciòn de base de datos externas en arcgis.
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptos
 
PROVEEDORES DATOS.NET framework.pptx
PROVEEDORES DATOS.NET framework.pptxPROVEEDORES DATOS.NET framework.pptx
PROVEEDORES DATOS.NET framework.pptx
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Conector mysql para .net
Conector mysql para .netConector mysql para .net
Conector mysql para .net
 
visual basic .net
visual basic .netvisual basic .net
visual basic .net
 
Diapositivas de jdbc
Diapositivas de jdbcDiapositivas de jdbc
Diapositivas de jdbc
 
Java DataBase Connectivity
Java DataBase ConnectivityJava DataBase Connectivity
Java DataBase Connectivity
 
Qué es jdbc
Qué es jdbcQué es jdbc
Qué es jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Percy zelada
Percy zeladaPercy zelada
Percy zelada
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Clases de oledb
Clases de oledbClases de oledb
Clases de oledb
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 

Último

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 

Último (20)

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 

Acceso a base de datos

  • 1. ACCESO A BASE DE DATOS ActiveX Data Objects (ADO) es una tecnología ampliable y de fácil uso para agregar a sus páginas Web acceso a bases de datos. Puede utilizar ADO para escribir secuencias de comandos compactas y escalables que le permitan conectarse a orígenes de datos compatibles con OLE DB, como bases de datos, hojas de cálculo, archivos de datos secuenciales o directorios de correo electrónico. OLE DB es una interfaz de programación de nivel de sistema que proporciona un conjunto estándar de interfaces COM para que permitan exponer las funciones del sistema de administración de bases de datos. Con el modelo de objetos ADO es fácil tener acceso a estas interfaces (mediante lenguajes de secuencias de comandos, como VBScript o JScript) para agregar funciones de bases de datos a las aplicaciones Web. Además, también puede utilizar ADO para tener acceso a bases de datos compatibles con Conectividad abierta de bases de datos (ODBC, Open Database Connectivity). Si no tiene mucha experiencia en conectividad con bases de datos, encontrará que la sintaxis de ADO es sencilla y fácil de utilizar. Si es un programador experimentado, agradecerá el acceso escalable de alto rendimiento que proporciona ADO para una gran variedad de orígenes de datos. Para obtener más información acerca de ADO, visite el sitio Web Microsoft Universal Data Access (UDA). Crear una cadena de conexión El primer paso en la creación de una aplicación de datos en Web consiste en proporcionar un método para que ADO encuentre e identifique el origen de datos. Para ello se utiliza una cadena de conexión, una serie de argumentos separados mediante un punto y coma que definen parámetros como el proveedor del origen de datos y la ubicación del mismo. ADO utiliza la cadena de conexión para identificar el proveedor OLE DB y para dirigir al proveedor al origen de datos. El proveedor es un componente que representa el origen de datos y que expone la información en la aplicación en forma de conjuntos de filas. En la tabla siguiente se enumeran las cadenas de conexión de OLE DB para varios orígenes de datos habituales: Origen de datos Cadena de conexión OLE DB Microsoft® Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ruta de acceso física al archivo .mdb Microsoft SQL Server Provider=SQLOLEDB.1;Data Source=ruta de acceso a la base de datos del servidor Oracle Provider=MSDAORA.1;Data Source=ruta de acceso a la base de datos del servidor Microsoft Provider=MSIDXS.1;Data Source=ruta de acceso al Indexing Service archivo Para proporcionar compatibilidad con versiones anteriores, el proveedor OLE DB para ODBC admite la sintaxis de las cadenas de conexión ODBC. En la tabla siguiente se enumeran las cadenas de conexión ODBC que se utilizan habitualmente:
  • 2. Controlador del origen de datos Cadena de conexión ODBC Microsoft Access Driver={Microsoft Access Driver (*.mdb)};DBQ=ruta de acceso física al archivo .mdb SQL Server DRIVER={SQL Server};SERVER=ruta de acceso al servidor Oracle DRIVER={Microsoft ODBC for Oracle};SERVER=ruta de acceso al servidor Microsoft Excel Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta de acceso física al archivo .xls; DriverID=278 Microsoft Excel 97 Driver={Microsoft Excel Driver (*.xls)};DBQ=ruta de acceso física al archivo .xls;DriverID=790 Paradox Driver={Microsoft Paradox Driver (*.db)};DBQ=ruta de acceso física al archivo .db;DriverID=26 Texto Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=ruta de acceso física al archivo .txt Microsoft Visual FoxPro® (con un contenedor de bases de datos) Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb=ruta de acceso física al archivo .dbc Microsoft Visual FoxPro (sin un contenedor de bases de datos) Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=ruta de acceso física al archivo .dbf Nota: Las cadenas de conexión que utilizan una ruta UNC para hacer referencia a un origen de datos que se encuentre en un equipo remoto pueden suponer un problema de seguridad potencial. Para evitar el acceso no autorizado al origen de datos, cree una cuenta de Windows para aquellos equipos que necesiten tener acceso a los datos y aplique los permisos NTFS adecuados al origen de datos. Para obtener más información, consulte Proteger los archivos mediante NTFS. Aspectos avanzados que se deben tener en cuenta al diseñar aplicaciones de datos Web Por razones de rendimiento y confiabilidad, se recomienda encarecidamente que se utilice un motor de base de datos cliente-servidor para el despliegue de aplicaciones Web controladas por datos que requieran una elevada demanda de accesos por parte de más de 10 usuarios simultáneos. Si bien ADO funciona con cualquier base de datos compatible con OLE DB, se ha probado y está diseñado para funcionar con bases de datos cliente-servidor como Microsoft SQL Server u Oracle.
  • 3. ASP acepta bases de datos de archivos compartidos (Microsoft Access o Microsoft FoxPro) como orígenes válidos de datos. Aunque algunos ejemplos de la documentación de ASP utilizan una base de datos de archivos compartidos, se recomienda utilizar estos tipos de motores de bases de datos únicamente con fines de desarrollo o en situaciones de despliegue limitado. Las bases de datos de archivos compartidos pueden no ser tan adecuadas como las bases de datos cliente-servidor para aplicaciones Web de producción muy exigentes. Si va a desarrollar una aplicación ASP de base de datos diseñada para conectarse a una base de datos remota de SQL Server, debe tener en cuenta también los aspectos siguientes: Elegir el esquema de conexión para SQL Server Puede elegir entre los métodos Sockets TCP/IP y Canalizaciones con nombre para tener acceso a bases de datos remotas de SQL Server. Con Canalizaciones con nombre, los clientes de la base de datos tienen que estar autenticados por Windows antes de establecer una conexión, dejando la posibilidad de que un equipo remoto que ejecute canalizaciones con nombre pueda denegar el acceso a un usuario que tenga las credenciales apropiadas de acceso a SQL Server, pero no tenga una cuenta de usuario de Windows en dicho equipo. Como alternativa, las conexiones que utilizan Sockets TCP/IP se conectan directamente al servidor de la base de datos, sin conectarse a través de un equipo intermediario (como es el caso de Canalizaciones con nombre). Como las conexiones establecidas mediante Sockets TCP/IP se conectan directamente al servidor de la base de datos, los usuarios pueden tener acceso mediante la autenticación de SQL Server, no mediante la autenticación de Windows. Error ODBC 80004005 Si el esquema de conexión para tener acceso a SQL Server no está correctamente configurado, los usuarios que vean la aplicación de base de datos podrían recibir el mensaje de error ODBC 80004005. Para corregir la situación, intente utilizar una conexión local de canalización con nombre en lugar de una conexión de red de canalización con nombre si SQL Server se ejecuta en el mismo equipo que IIS. Las reglas de seguridad de Windows XP no se utilizarán de forma obligatoria, ya que la canalización es una conexión local, en lugar de una conexión de red, a la que puede representar la cuenta de usuario anónimo. Además, en la cadena de conexión de SQL Server (ya sea en el archivo Global.asa, ya en una secuencia de comandos de una página), debe cambiar el parámetro SERVER=nombre del servidor por SERVER=(local). La palabra clave (local) es un parámetro especial que reconoce el controlador ODBC de SQL Server. Si esta solución no funciona, pruebe a utilizar un protocolo no autenticado entre IIS y SQL Server, como los sockets TCP/IP. Este protocolo funcionará si SQL Server se ejecuta de forma local o en un equipo remoto. Nota Para aumentar el rendimiento en la conexión con bases de datos remotas, utilice Sockets TCP/IP. Seguridad de SQL Server Si utiliza las características de seguridad integradas o mixtas de SQL Server y la base de datos se encuentra en un servidor remoto, no podrá utilizar la autenticación de Windows integrada. Específicamente, no puede reenviar credenciales de autenticación de Windows integrada al equipo remoto. Esto significa que quizá tenga que utilizar la autenticación básica, que se basa en que el usuario proporcione la información del nombre de usuario y la contraseña. Para obtener más información acerca de estos aspectos, visite el sitio Web de Microsoft Product Support Services. Conectarse al origen de datos ADO proporciona el objeto Connection para establecer y administrar las conexiones entre las aplicaciones y los orígenes de datos compatibles con OLE DB o las bases de datos compatibles con ODBC. El objeto Connection incorpora propiedades y métodos que se pueden utilizar para abrir y cerrar conexiones con bases de datos, y para enviar consultas de actualización de la información. Para establecer una conexión con una base de datos, cree primero una instancia del objeto Connection. Por ejemplo, la secuencia de comandos siguiente crea una instancia del objeto Connection y procede a abrir una conexión:
  • 4. <% 'Crea un objeto Connection. Set cn = Server.CreateObject("ADODB.Connection") 'Abre una conexión mediante la cadena de conexión OLE DB. cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosMercadoVentasPrevistas.mdb" %> Nota: La cadena de conexión no contiene espacios en blanco ni antes ni después del signo igual (=). En este caso, el método Open del objeto Connection se refiere a la cadena de conexión. Ejecutar consultas SQL con el objeto Connection Con el método Execute del objeto Connection puede emitir comandos al origen de datos, como consultas de SQL (Lenguaje de consulta estructurado). (SQL, lenguaje estándar para comunicarse con bases de datos, define comandos para recuperar y actualizar información.) El método Execute acepta parámetros que especifiquen el comando (o la consulta), el número de registros de datos a los que afecta y el tipo de comando que se utiliza. La siguiente secuencia de comandos utiliza el método Execute para enviar una consulta con un comando INSERT de SQL, que inserta datos en una tabla concreta de la base de datos. En este caso, el bloque de la secuencia de comandos inserta el nombre José Lugo en una tabla de la base de datos llamada Customers. <% 'Define la cadena de conexión OLE DB. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb" 'Crea la instancia del objeto Connection y abre una conexión con la base de datos. Set cn = Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString 'Define la instrucción SELECT de SQL. strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('José','Lugo')" 'Utiliza el método Execute para enviar una consulta SQL a la base de datos. cnn.Execute strSQL,,adCmdText + adExecuteNoRecords %> Observe que se especifican dos parámetros en la instrucción que se utiliza para ejecutar la consulta:
  • 5. adCmdText y adExecuteNoRecords. El parámetro opcional adCmdText especifica el tipo de comando e indica que el proveedor debe evaluar la instrucción de consulta (en este caso, una consulta SQL) como una definición textual de un comando. El parámetro adExecuteNoRecords indica a ADO que no debe crear un conjunto de registros de datos si no se devuelven resultados a la aplicación. Este parámetro sólo funciona con los tipos de comandos definidos como texto, como las consultas SQL, o con procedimientos almacenados de bases de datos. Aunque los parámetros adCmdText y adExecuteNoRecords son opcionales, debe especificarlos al utilizar el método Execute para mejorar así el rendimiento de la aplicación de datos. Importante Los parámetros ADO, como adCmdText, deben estar definidos para poder utilizarlos en una secuencia de comandos. Un método cómodo para definir los parámetros consiste en utilizar una biblioteca de tipos de componentes, que es un archivo que contiene definiciones para todos los parámetros ADO. Para implementar una biblioteca de tipos de componentes debe declararla antes. Agregue la etiqueta siguiente <METADATA> al archivo .asp o a Global.asa para declarar la biblioteca de tipos ADO: <!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"--> Si desea obtener más detalles acerca de cómo implementar las bibliotecas de tipos de componentes, consulte la sección Utilizar constantes del tema Utilizar variables y constantes. Además del comando INSERT de SQL, puede utilizar los comandos UPDATE y DELETE de SQL para modificar y quitar información de la base de datos. Con el comando UPDATE de SQL puede modificar los valores de los elementos de una tabla de la base de datos. La siguiente secuencia de comandos usa el comando UPDATE para cambiar todos los campos FirstName de la tabla Customers a Juan en todas las filas cuyo campo LastName contenga el apellido Soto. <% Set cn = Server.CreateObject("ADODB.Connection") cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb" cn.Execute "UPDATE Customers SET FirstName = 'Juan' WHERE LastName = 'Soto' ",,adCmdText + adExecuteNoRecords %> Para quitar determinados registros de una tabla de la base de datos, utilice el comando DELETE de SQL. La siguiente secuencia de comandos quita todas las filas de la tabla Customers cuyo apellido sea Soto: <% Set cn = Server.CreateObject("ADODB.Connection") cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb" cn.Execute "DELETE FROM Customers WHERE LastName = 'Soto'",,adCmdText + adExecuteNoRecords
  • 6. %> Nota: Debe tener mucho cuidado al utilizar el comando DELETE de SQL. Un comando DELETE que no vaya acompañado de una cláusula WHERE eliminará todas las filas de la tabla. Asegúrese de incluir la cláusula WHERE de SQL, que especifica las filas exactas que se van a eliminar. Utilizar el objeto Recordset para manipular los resultados Para recuperar datos, examinar resultados y modificar su base de datos, ADO proporciona el objeto Recordset. El objeto Recordset tiene las funciones necesarias para, dependiendo de las restricciones de las consultas, recuperar y presentar un conjunto de filas, o registros, de una base de datos. El objeto Recordset mantiene la posición de cada registro devuelto por la consulta, lo que permite recorrer los resultados de uno en uno. Recuperar un conjunto de registros Las buenas aplicaciones de datos Web emplean el objeto Connection para establecer un vínculo, y el objeto Recordset para manipular los datos devueltos. Al combinar las funciones especializadas de ambos objetos puede desarrollar aplicaciones de bases de datos que realicen casi cualquier tarea de tratamiento de datos. Por ejemplo, la siguiente secuencia de comandos del servidor utiliza el objeto Recordset para ejecutar un comando SELECT de SQL. El comando SELECT recupera un conjunto específico de información basándose en las restricciones de la consulta. La consulta también contiene una cláusula WHERE de SQL, que se utiliza para establecer el criterio de selección de la consulta. En este ejemplo, la cláusula WHERE limita la consulta a todos los registros que contengan el apellido Soto en la tabla Customers de la base de datos. <% 'Establece una conexión con un origen de datos. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb" Set cn = Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString 'Crea una instancia de un objeto Recordset. Set rsCustomers = Server.CreateObject("ADODB.Recordset") 'Abre un objeto Recordset con el método Open 'y utiliza la conexión establecida por el objeto Connection. strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' " rstCustomers.Open strSQL, cnn 'Recorre el conjunto de los registros y presenta los resultados 'e incrementa la posición del registro con el método MoveNext. Set objFirstName = rstCustomers("Nombre")
  • 7. Set objLastName = rstCustomers("Apellido") Do Until rstCustomers.EOF Response.Write objFirstName & " " & objLastName & "<BR>" rstCustomers.MoveNext Loop %> Observe que en el ejemplo anterior, el objeto Connection estableció la conexión con la base de datos y que el objeto Recordset utilizó la misma conexión para recuperar resultados de la base de datos. Este método es útil cuando tenga que configurar con precisión la forma en que se establece el vínculo con la base de datos. Por ejemplo, si necesitara especificar el tiempo de espera antes de anular un intento de conexión, tendría que utilizar el objeto Connection para establecer dicha propiedad. Sin embargo, si sólo desea establecer una conexión con las propiedades de conexión predeterminadas de ADO, podría utilizar el método Open del objeto Recordset para establecer el vínculo: <% strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosEmpleados.mdb" strSQL = "SELECT FirstName, LastName FROM Customers WHERE LastName = 'Soto' " Set rsCustomers = Server.CreateObject("ADODB.Recordset") 'Abre una conexión con el método Open 'y utiliza la conexión establecida por el objeto Connection. rstCustomers.Open strSQL, strConnectionString 'Recorre el conjunto de registros, presenta los resultados 'e incrementa la posición del registro con el método MoveNext. Set objFirstName = rstCustomers("Nombre") Set objLastName = rstCustomers("Apellido") Do Until rstCustomers.EOF Response.Write objFirstName & " " & objLastName & "<BR>" rstCustomers.MoveNext Loop
  • 8. %> Cuando establece una conexión con el método Open del objeto Recordset, está utilizando implícitamente el objeto Connection para proteger el vínculo. Para obtener más información, consulte la documentación acerca de Microsoft ActiveX Data Objects (ADO), disponible en el sitio Web de Microsoft Universal Data Access. Nota Para mejorar de forma significativa el rendimiento de las aplicaciones ASP de base de datos, piense en la posibilidad de cambiar el estado del conjunto de registros a Application. Para obtener más información, consulte Guardar datos en la memoria caché. A menudo resulta útil contar el número de registros que se devuelven en un conjunto de registros. El método Open del objeto Recordset permite especificar un parámetro opcional, cursor, que determina cómo recupera y recorre el conjunto de registros el proveedor subyacente. Al agregar el parámetro de cursor adOpenKeyset a la instrucción que se utiliza para ejecutar la consulta, permite que la aplicación cliente recorra todo el conjunto de registros. Como resultado, la aplicación puede utilizar la propiedad RecordCount para calcular con precisión el número de registros del conjunto. Vea el siguiente ejemplo: <% Set rsCustomers = Server.CreateObject("ADODB.Recordset") rs.Open "SELECT * FROM NewOrders", "Provider=Microsoft.Jet.OLEDB.3.51;Data Source='C:PedidosClientesPedidos.mdb'", adOpenKeyset, adLockOptimistic, adCmdText 'Utiliza la propiedad RecordCount del objeto Recordset para realizar la cuenta. If rs.RecordCount >= 5 then Response.Write "Recibimos estos " & rs.RecordCount & " nuevos pedidos<BR>" Do Until rs.EOF Response.Write rs("NombreCliente") & " " & rs("ApellidoCliente") & "<BR>" Response.Write rs("NumeroCuenta") & "<BR>" Response.Write rs("Cantidad") &"<BR>" Response.Write rs("FechaEntrega") & "<BR>BR<>" rs.MoveNext Loop Else Response.Write "Hay menos de " & rs.RecordCount & " nuevos pedidos." End If
  • 9. rs.Close %> Mejorar las consultas con el objeto Command Con el objeto Command de ADO puede ejecutar consultas de la misma forma que con los objetos Connection y Recordset, la diferencia está en que con el objeto Command puede preparar, o compilar, la consulta con el origen de la base de datos y después enviar la misma consulta repetidamente con distintos valores. La ventaja de compilar consultas de esta manera consiste en la enorme reducción del tiempo necesario para volver a enviar las modificaciones de una consulta existente. Además, puede dejar las consultas SQL parcialmente indefinidas, con la posibilidad de alterar partes de las consultas justo antes de su ejecución. La colección Parameters del objeto Command le ahorra los problemas de tener que volver a construir la consulta cada vez que tenga que ejecutarla. Por ejemplo, si tiene que actualizar periódicamente la información de suministros y costos en un sistema de inventario Web, puede predefinir su consulta de la siguiente manera: <% 'Abre una conexión mediante el objeto Connection. Observe que el objeto Command 'no tiene un método Open para establecer la conexión. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosInventario.mdb" Set cn = Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString 'Crea el objeto Command; utiliza la propiedad ActiveConnection para 'la conexión al objeto Command. Set cm= Server.CreateObject("ADODB.Command") Set cmn.ActiveConnection = cnn 'Define la consulta SQL. cm.CommandText = "INSERT INTO Inventory (Material, Cantidad) VALUES (?, ?)" 'Guarda una versión preparada (o precompilada) de la consulta especificada en la propiedad 'CommandText antes de la primera ejecución del objeto Command. cmn.Prepared = True 'Define la información de configuración de los parámetros de la consulta. cmn.Parameters.Append cmn.CreateParameter("material_type",adVarChar, ,255 )
  • 10. cmn.Parameters.Append cmn.CreateParameter("quantity",adVarChar, ,255 ) 'Define y ejecuta la primera inserción. cmn("material_type") = "bombillas" cmn("quantity") = "40" cmn.Execute ,,adCmdText + adExecuteNoRecords 'Define y ejecuta la segunda inserción. cmn("material_type") = "fusibles" cmn("quantity") = "600" cmn.Execute ,,adCmdText + adExecuteNoRecords %> Importante Los parámetros ADO, como adCmdText, no son más que variables, lo que signifique que para utilizarlos en una secuencia de comandos de acceso a datos es necesario definir su valor. Puesto que ADO utiliza gran número de parámetros, es más fácil definirlos mediante una biblioteca de tipos de componentes, un archivo que contiene definiciones de todos los parámetros y constantes ADO. Si desea obtener más detalles acerca de cómo implementar las bibliotecas de tipos ADO, consulte la sección Utilizar constantes del tema Utilizar variables y constantes. En el ejemplo anterior, observará que la secuencia de comandos vuelve a construir repetidamente y envía una consulta SQL con distintos valores, sin tener que volver a definir y enviar la consulta al origen de datos. Compilar consultas con el objeto Command también le ofrece la ventaja de evitar los problemas que pudieran provenir de concatenar cadenas y variables para formar consultas SQL. En particular, si utiliza la colección Parameter del objeto Command, puede evitar problemas relacionados con la definición de ciertos tipos de variables de cadenas, fechas y horas. Por ejemplo, los valores de las consultas SQL que contengan apóstrofos (') pueden hacer que la consulta falle: strSQL = "INSERT INTO Customers (FirstName, LastName) VALUES ('Roberto','O'Hara')" Observe que el apellido O'Hara contiene un apóstrofo que entra en conflicto con los apóstrofos que se utilizan como delimitadores de datos en la palabra clave VALUES de SQL. Si enlaza el valor de la consulta como un parámetro del objeto Command, se evitan este tipo de problemas. Combinar formularios HTML y el acceso a bases de datos Las páginas Web que contienen formularios HTML pueden permitir que los usuarios consulten de forma remota una base de datos y recuperen información concreta. Con ADO puede crear secuencias de comandos sorprendentemente sencillas que recopilen información del formulario del usuario, creen una consulta personalizada para la base de datos y devuelvan información al usuario. Mediante el objeto Request de ASP puede recuperar la información escrita en los formularios HTML e incorporar dicha información a sus instrucciones SQL. Por ejemplo, el siguiente bloque de secuencia de comandos inserta en una tabla la información suministrada por un formulario HTML. La secuencia de comandos recopila información del usuario con la colección Form del objeto Request. <%
  • 11. 'Abre una conexión mediante el objeto Connection. El objeto Command 'no tiene un método Open para establecer la conexión. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:CatálogoSemillas.mdb" Set cn = Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString 'Crea una instancia del objeto Command 'y utiliza la propiedad ActiveConnection para adjuntar 'la conexión al objeto Command. Set cm= Server.CreateObject("ADODB.Command") Set cmn.ActiveConnection = cnn 'Define la consulta SQL. cmn.CommandText = "INSERT INTO MySeedsTable (Type) VALUES (?)" 'Define la información de configuración de los parámetros de la consulta. cmn.Parameters.Append cmn.CreateParameter("type",adVarChar, ,255) 'Asigna el valor de la entrada y ejecuta la actualización. cmn("type") = Request.Form("SeedType") cmn.Execute ,,adCmdText + adExecuteNoRecords %> Para obtener más información acerca de los formularios y el uso del objeto Request de ASP, consulte Procesar los datos introducidos por el usuario. Administrar las conexiones con bases de datos Uno de los mayores retos del diseño de una aplicación Web sofisticada de base de datos, como una aplicación de entrada de pedidos en línea que atienda a miles de clientes, es la correcta administración de las conexiones con la base de datos. Abrir y mantener las conexiones con las bases de datos, incluso cuando no se transmita información, puede afectar severamente a los recursos del servidor de base de datos y provoca problemas de conectividad. Las aplicaciones Web de bases de datos bien diseñadas reciclan las conexiones con la base de datos y compensan los retrasos debidos al tráfico de la red. Abandonar los intentos de conexión Un servidor de base de datos que experimente un repentino incremento en su actividad puede quedar saturado en sus conexiones, lo que incrementa considerablemente el tiempo necesario para
  • 12. establecer una nueva conexión. Como resultado, los retrasos excesivos en la conexión pueden reducir el rendimiento de su aplicación de base de datos. Con la propiedad ConnectionTimeout del objeto Connection puede limitar la cantidad de tiempo que su aplicación espera antes de abandonar un intento de conexión y emitir un mensaje de error. Por ejemplo, la siguiente secuencia de comandos establece la propiedad ConnectionTimeout para esperar veinte segundos antes de cancelar el intento de conexión: Set cnn = Server.CreateObject("ADODB.Connection") cnn.ConnectionTimeout = 20 cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosInventario.mdb" El valor predeterminado de la propiedad ConnectionTimeout es 30 segundos. Nota Antes de incorporar la propiedad ConnectionTimeout a sus aplicaciones de bases de datos, asegúrese de que su proveedor de conexiones y el origen de datos acepten esta propiedad. Agrupar conexiones La agrupación de conexiones permite que la aplicación Web utilice una conexión de un grupo o de una reserva de conexiones libres que no es necesario establecer de nuevo. Tras crear una conexión y colocarla en un grupo, la aplicación la utiliza de nuevo sin necesidad de realizar el proceso de conexión. Así se puede obtener una importante ganancia de rendimiento, en especial si la aplicación se conecta a través de una red o se conecta y desconecta repetidamente. Además, una conexión agrupada la pueden utilizar varias aplicaciones. Agrupación de sesiones OLE DB OLE DB tiene una característica de agrupación, llamada agrupación de sesiones, optimizada para mejorar el rendimiento de conectividad en grandes aplicaciones Web de bases de datos. La agrupación de sesiones mantiene la seguridad de la conexión y otras propiedades. Una conexión agrupada sólo se utiliza de nuevo si ambos lados de la conexión realizan peticiones que coinciden. De forma predeterminada, los proveedores OLE DB de Microsoft SQL Server y Oracle admiten la agrupación de sesiones. Esto quiere decir que no es necesario configurar la aplicación, el servidor o la base de datos para utilizar la agrupación de sesiones. Sin embargo, si el proveedor no es compatible con la agrupación de sesiones, necesitará crear una entrada en el registro para habilitar esta característica. Si desea obtener más información acerca de la agrupación de sesiones, consulte la documentación de OLE DB 2.0 Software Development Kit (SDK) . Agrupación de sesiones ODBC Si desea que su controlador ODBC participe en la agrupación de conexiones, debe configurar su controlador específico de base de datos y después establecer la propiedad CPTimeout del controlador en el registro del sistema de Windows. La propiedad CPTimeout determina el período de tiempo de inactividad que una conexión puede permanecer en la agrupación de conexiones. Si la conexión permanece en el grupo durante un período de tiempo mayor que el establecido en CPTimeout, la conexión se cierra y se quita del grupo. El valor predeterminado de CPTimeout es 60 segundos. Puede establecer selectivamente la propiedad CPTimeout para permitir la agrupación de conexiones por cada controlador específico de base de datos ODBC si crea una entrada en el registro del sistema con los siguientes valores:
  • 13. HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIcontroladorCPTimeout = timeout (REG_SZ, en segundos) Por ejemplo, la clave siguiente establece el tiempo de inactividad del grupo de conexiones en 180 segundos (3 minutos) para el controlador de SQL Server. HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL ServerCPTimeout = 180 Nota De forma predeterminada, su servidor Web activa el grupo de conexiones para SQL Server y asigna a CPTimeout 60 segundos. Utilizar conexiones entre varias páginas Aunque puede volver a utilizar una conexión entre varias páginas si almacena la conexión en el objeto Application de ASP, al hacerlo puede mantener abierta una conexión de forma innecesaria, despreciando así las ventajas del grupo de conexiones. Si tiene muchos usuarios que necesitan conectarse a la misma aplicación de base de datos ASP, es mejor volver a utilizar la cadena de conexión con la base de datos en varias páginas Web guardando dicha cadena en el objeto Application de ASP. Por ejemplo, puede especificar una cadena de conexión en el procedimiento de evento Application_OnStart del archivo Global.asa, como en la siguiente secuencia de comandos: Application("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosInventario.mdb" Después, en cada archivo ASP que tenga acceso a la base de datos, puede escribir <OBJECT RUNAT=SERVER ID=cnn PROGID="ADODB.Connection"></OBJECT> para crear una instancia del objeto Connection para la página y utilizar la secuencia de comandos cnn.Open Application("ConnectionString") para abrir la conexión. Al final de la página, la conexión se cierra con cnn.Close En caso de que un usuario individual vuelva a necesitar una conexión en otras páginas Web, puede que le interese utilizar el objeto Session en lugar del objeto Application para almacenar la cadena de conexión. Cerrar las conexiones Para hacer el mejor uso del grupo de conexiones, cierre explícitamente las conexiones con las bases de datos lo antes posible. De forma predeterminada, una conexión termina cuando termina de ejecutarse su secuencia de comandos. Sin embargo, al cerrar explícitamente una conexión en la secuencia de comandos cuando ya no sea necesaria, se reduce la carga del servidor de base de datos y se deja la conexión disponible para otros usuarios. Puede utilizar el método Close del objeto Connection para terminar explícitamente una conexión entre el objeto Connection y la base de datos. La siguiente secuencia de comandos abre y cierra una conexión: <%
  • 14. strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:DatosInventario.mdb" Set cn = Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString cnn.Close %>