Creada el: 14/09/99 - Actualizada el:
Conexión con una Base de Datos
El primer paso para tener acceso a la información de una base de datos consiste en establecer una conexión con el origen de datos. ADO proporciona el objeto Connection, que puede utilizar para establecer y administrar las conexiones entre sus aplicaciones y las bases de datos de ODBC. El objeto Connection incorpora diversas propiedades y métodos que puede 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 siguiente secuencia de comandos 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; la cadena hace referencia al DSN
cn.Open "FILEDSN=MiBaseDeDatos.dsn"
%>
Nota
La cadena DSN no contiene espacios en blanco ni antes ni después del signo igual (=).En este caso, el método Open del objeto Connection hace referencia al DSN de Archivo, que contiene la información de ubicación y la configuración de la base de datos. Opcionalmente, también puede hacer referencia directamente a un proveedor, origen de datos, Id. de usuario y contraseña, en lugar de al DSN.
Ejecución de Consultas con el Objeto CONNECTION
Con el método Execute del objeto Connection puede enviar consultas en el Lenguaje de consulta estructurado (SQL) al origen de datos y recuperar los resultados. SQL, un lenguaje estándar para comunicarse con bases de datos, tiene comandos para recuperar y actualizar información.
La siguiente secuencia de comandos utiliza el método Execute del objeto Connection 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 el DSN de Archivo
strDSN = "FILEDSN=MiBaseDeDatos.dsn"
'Crea la instancia del objeto Connection y abre una conexión con la base de datos
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN
'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
cn.Execute(strSQL)
%>
Nota La ruta del DSN de Archivo no debe incluir espacios en blanco antes ni después del signo igual (=).
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 Robles.
<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MiBaseDeDatos.dsn"
cn.Execute "UPDATE Customers SET FirstName = 'Juan' WHERE LastName = 'Robles' "
%>
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 Robles:
<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MiBaseDeDatos.dsn"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Robles'"
%>
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 una cláusula WHERE de SQL, que especifica las filas exactas que se van a eliminar.
Uso del Objeto RECORDSET para manipulación de resultados
Aunque el objeto Connection simplifica la tarea de conectar con una base de datos y emitir una consulta, el objeto Connection tiene sus limitaciones. En concreto, con el objeto Connection no se pueden crear secuencias de comandos que recuperen y presenten información de una base de datos; tiene que saber exactamente las modificaciones que desea realizar en la base de datos y después implementar las modificaciones como consultas.
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.
Dependiendo de cómo configure las propiedades del tipo de cursor del objeto Recordset, puede recorrer y actualizar los registros. Los cursores de la base de datos se comportan como punteros que le permiten encontrar un elemento específico de un conjunto de registros. Los cursores son especialmente útil para recuperar y examinar registros, y después realizar operaciones basadas en dichos registros. El objeto Recordset tiene propiedades que le permiten controlar con precisión el comportamiento de los cursores, lo que aumenta la capacidad de examinar y actualizar los resultados.
Por ejemplo, puede utilizar las propiedades CursorType y CursorLocation para configurar un tipo de cursor que devuelva un conjunto de resultados a su aplicación cliente (los resultados permanecen normalmente en el servidor de base de datos) y presente las últimas modificaciones realizadas en la base de datos por otros usuarios.
Las buenas aplicaciones de base de datos emplean el objeto Connection para establecer un vínculo y el objeto Recordset para manipular los datos devueltos. Si utiliza conjuntamente 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
strDSN = "FILEDSN=MiBaseDeDatos.dsn"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN
'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' "
rsCustomers.Open strSQL, cn
'Recorre el conjunto de los registros y presenta los resultados
'e incrementa la posición del registro con el método MoveNext
Set objFirstName = rsCustomers("FirstName")
Set objLastName = rsCustomers("LastName")
Do Until rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
Loop
%>
Observe que en el ejemplo anterior, el objeto Connection estableció la conexión con la base de datos y 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:
<%
strDSN = "FILEDSN=MiBaseDeDatos.dsn"
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
rsCustomers.Open strSQL, strDSN
'Recorre el conjunto de registros, presenta los resultados
'e incrementa la posición del registro con el método MoveNext
Set objFirstName = rsCustomers("FirstName")
Set objLastName = rsCustomers("LastName")
Do Until rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.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.