Acceso al origen 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 la 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.
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(r) Access
|
Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ruta física de acceso 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 Indexing Service
|
Provider=MSIDXS.1;Data Source= ruta de acceso al 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 física de acceso 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 física de acceso al archivo .xls ; DriverID=278
|
Microsoft Excel 97
|
Driver={ Microsoft Excel Driver (*.xls)};DBQ= ruta física de acceso al archivo .xls ;DriverID=790
|
Paradox
|
Driver={Microsoft Paradox Driver (*.db)};DBQ= ruta física de acceso al archivo .db ;DriverID=26
|
Texto
|
Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir= ruta física de acceso al archivo .txt
|
Microsoft Visual FoxPro (r) (con un contenedor de bases de datos)
|
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb= ruta física de acceso al archivo .dbc
|
Microsoft Visual FoxPro (sin un contenedor de bases de datos)
|
Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb= ruta física de acceso al archivo .dbf
|
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:\Datos\Empleados.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.
|