22 - SELECT (listado de una tabla de Microsoft SQL Server) |
Aprendimos el concepto anterior a efectuar una inserción (insert) en una tabla de SQL Server. Ahora veamos como rescatar los datos almacenados previamente.
La siguiente página recupera todos los datos de la tabla articulos:
<%option explicit%> <html> <head> <title>problema</title> </head> <body> <% dim conexion set conexion = Server.CreateObject("ADODB.Connection") conexion.ConnectionString = "Provider=SQLOLEDB.1;" & _ "Data Source=.;" & _ "Integrated Security=SSPI;" & _ "Persist Security Info=False;" & _ "Initial Catalog=wi630629_aspya" conexion.Open dim registros set registros = Server.CreateObject("ADODB.RecordSet") registros.open "select codigo,descripcion,precio from articulos",conexion do while not registros.eof response.write("Código:" & registros("codigo")) response.write("<br>") response.write("Descripción:" & registros("descripcion")) response.write("<br>") response.write("Precio:" & registros("precio")) response.write("<br>") response.write("------------------------------------------------------------") response.write("<br>") registros.movenext loop conexion.close %> </body> </html>
Primero creamos un objeto "ADODB.Connection" y luego inicializamos la propiedad ConnectionString con la cadena de conexión como lo vimos en el concepto anterior.
Lo nuevo comienza con la creación de un objeto "ADODB.RecordSet"
set registros = Server.CreateObject("ADODB.RecordSet")
Un RecordSet representa un conjunto de registros que se recuperan a partir de la ejecución del comando SQL Select.
Al método open le pasamos como parámetro el comando SQL y la referencia del objeto que estableció la conexión con la base de datos:
registros.open "select codigo,descripcion,precio from articulos",conexion
El resultado de este select puede generar 0,1,2,3 etc. filas de la tabla articulos, para recuperarlos debemos disponer una estructura repetitiva para recorrer todas las filas almacenadas en nuestro RecordSet:
do while not registros.eof response.write("Código:" & registros("codigo")) response.write("<br>") response.write("Descripción:" & registros("descripcion")) response.write("<br>") response.write("Precio:" & registros("precio")) response.write("<br>") response.write("------------------------------------------------------------") response.write("<br>") registros.movenext loop
El RecordSet tiene una propiedad llamada eof que almacena un valor boolean que indica si llegamos al último registro almacenado. Es por ello que el while se repite mientras no (not) lleguemos al final.
Si el comando Select retorna cero filas (por ejemplos esto ocurre si la tabla articulos se encuentra sin registros) la propiedad eof almacena un true y como le antecedemos el operador lógico not la condición se valida como false y por lo tanto no ejecuta el contendio del while.
En caso de haber por lo menos un registro en el RecordSet se ejecutará el bloque contenido en el while. El RecordSet tiene un puntero que inicialmente apunta al primer registro recuperado. Si queremos luego recuperar los datos de cada campo procedemos de la siguiente forma:
response.write("Código:" & registros("codigo"))
Es decir mediante el objeto RecordSet (en nuestro caso se llama registros) le indicamos entre paréntesis y doble comillas el nombre del campo a recuperar. El nombre del campo debe coincidir con el nombre indicado en el comando SQL Select
Para avanzar el puntero del RecordSet llamamos al método MoveNext:
registros.movenext
Cuando salimos de la estructura repetitiva procedemos a cerrar la conexión:
conexion.close