Trabajar con bases de datos en ASP

ASP, objetos ADO y conectores ODBC. Los elementos indispensables para el trabajo con bases de datos.
Una de las principales ventajas que presenta el trabajar con páginas dinámicas es el poder almacenar los contenidos en bases de datos. De esta forma, podemos organizarlos, actualizarlos y buscarlos de una manera mucho más simple.

ASP nos ofrece una forma muy eficaz de interaccionar con estas bases de datos gracias al uso del componente ADO (ActiveX Data Objects) el cual permite acceder a dichas bases de una forma sencilla.

Este ADO no es más que un conjunto de objetos que, utilizados en conjunto, nos permiten explotar de una forma muy versátil las bases de datos de nuestra aplicación. No entraremos por el momento en consideraciones teóricas al respecto.

Por otra parte, lo scripts ASP deben establecer un dialogo con la base de datos. Este dialogo se lleva a cabo a partir de un idioma universal: el SQL (Structured Query Language) el cual es común a todas las bases de datos. Este lenguaje resulta, como veremos en el manual de SQL, muy potente y fácil de aprender.

En este manual de ASP nos limitaremos a utilizar las instrucciones básicas que serán aprendidas a medida que explicamos las diferentes formas de actuar sobre una base de datos a partir de páginas ASP.

La base de datos que ha sido utilizada en estos ejemplos es MS Access. No es por supuesto la única si bien es la más corriente en pequeños PCs y resulta absolutamente operativa siempre que las tablas no sean astronómicamente grandes. Esperamos poder ofreceros próximamente también un pequeño curso de Access en el que explicar los principios rudimentarios necesarios para poder servirnos de él. No obstante, esta aplicación resulta suficientemente fácil e intuitiva como para poder prescindir de dicho curso por el momento.

Así pues, para sumergirnos en estos capítulos siguientes, hemos de cumplir los siguientes requisitos técnicos:

-Instalar el PWS
-Enlazar la base de datos con ODBC
-Instalar el MS Access (viene dentro del pack Office)
-Disponer de un browser y un editor (MS IE y Home Site son nuestras humildes recomendaciones)

La base de datos y los scripts que usamos en los ejemplos pueden ser descargados aquí.

Autor

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Compartir

Comentarios

Juan Alejandro

09/8/2002
Felicitaciones por el sitio, muy agredecido por compartir este manual, me gustaria hacer una consulta "Tengo un problema no se ejecuta el ODBC del panel de control para hacer la conexion y no se que puede ser, si usted me pudiera ayudar se lo agradeceria

COMENTARIO:

Pues resulta que yo nunca he visto ese error, aunque si que me han comentado que existe. Puede deberse a una instalación de Windows deficiente o incompleta. Mi consejo siempre ha sido intentar instalar ese componente de Windows a través de la modificación de la instalación de Windows. Volver a instalar Windows puede ser otra solución aunque muy radical...

Invito a los que puedan tener este mismo problema o los que sepan la solución exacta a que la envíen como comentario en este artículo. Gracias

Jesús Pié

02/9/2002
A mi tambien me ocurre esto (en dos ordenadores) desde que instalé para probarlo el sqlserver del office 2000, y ni desinstalando este último se me activo el icono del panel de control. Solución: ir directamente a windows\system y crear un acceso directo en el escritorio del elemento 'odbcad32.exe'

Jesus María Echániz Gurruchaga

24/11/2003
El articulo sobre el uso de bases de datos me ha servido de mucha ayuda, estoy desarrollando una página web que efectúa diversas consultas a bases de datos, precisamente de Access 2000, pongo la versión por si en algun artículo podriais aclarar la siguiente cuestión, al intentar añadir, borrar o actualizar registros me da el siguiente mensaje:

Tipo de error: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.

Por lo demás todo funciona correctamente, he desarrollado diversas formas de consultas, paginadas, filtradas por campos, etc.. y funciona de maravilla salvo lo anteriormente expuesto, trabajo con Visual Basic y estoy habituado a utilizar las bases de datos de muchas formas, las conexiones normalmente las hago a traves del "ConnectionString" y estableciendo luego el modo de apertura de las bases, ya sea lectura, escritura, el modo de bloqueo, etc...y nunca me habian dado ningun problema, tras leer el artículo, he copiado literalemente el ejemplo, para lo cual he creado tambien el DSN, etc...y todo sigue igual, las consultas funcionan todas exactamente igual pero no deja actualizar y da el error que reseñaba anteriormente.

Entiendo que quizá este no es el apartado para este tipo de comentarios pero tras recorrerme todos los foros y FAQ no he encontrado ninguna respuesta, agradecería aunque sea una indicación de donde puede estar el problema o referencia a algun artículo publicado en ese sentido, incluyo la versión de Access (2000) porque el ejemplo utiliza otra, he pensado que igual el problema podría estar ahí.

Sin otro particular y agradecido de antemano, un saludo y felicidades por el website, la verdad es que es una gran ayuda para los pardillos como yo e incluso para los mas avezados.

Gracias.

Victor Osnaya

04/12/2003
Jesus María:

A mi se me presentaba el error cuando trataba de utilizar un RecordSet actualizable en una conexión abierta como ReadOnly, pero pueden ser muchas causas, porque no publicas el codigo que te envia el error para que sea de más ayuda??

Saludos

Victor Osnaya

16/12/2003
Jesus María:

Intenta verificando que tienes permisos a nivel FileSystem para escritura en tu archivo de base de datos, muchas veces se resuelve este error con asignación correcta de derechos en el Filesystem.

Saludos!!

Natalia

05/12/2006
a mi me dio el error de odbc y buscando encontre esta linea , la modifique y se acabo el problema

Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("bd1.mdb")

luego me dio otro problema al mostrar los registros pero le faltaba el fields
<td><%=RS.Fields("nombre")%></td>

Julian

30/6/2009
error en codigo asp
Soy novato escribiendo codigo en Asp pero me salio el siguiente error y no hepodido resolverlo
Tipo de error:
Microsoft JET Database Engine (0x80040E09)
No se puede actualizar. Base de datos u objeto de sólo lectura.
/ingreso.asp, línea 22

Sebas

27/5/2010
Listado
Buenas, tengo una base de datos de acces donde tiengo nombre y apellidos, yo quiero saber como hacer para restringir el lsitado que muestro por asp y solamente mostrar los que tengan nombre de Juan

leonardo_quiroga_villalva

15/8/2010
Cómo conectar ASP vía DSN
Esa es mi duda. ¿Podría alguien postear la cadena de conexión de ASP a una base de datos .MDB mediante un DSN de Usuario o de sistema?
Cualquier ayuda será agradecida.
Saludos.

osman

02/10/2011
Sulucion del erro "operacion debe usar una consulta actualizable"
Este erros suele darse en máquinas que corren sobre el sistema operativo Windows XP, existen varias soluciones. Una de ellas, y la que yo utilicé, comprendía la reconfiguración de los permisos de la carpeta donde se ubica la base de datos (también pueden modificarse únicamente los permisos del fichero *.mdb de la BD) para los usuarios que acceden a través de internet. Para ello basta seguir los siguientes pasos:

?Asegurarnos de que tenemos desactivada la opción Utilizar uso compartido simple de archivos, accesible a través del menú Herramientas > Opciones de carpeta? > Ver desde cualquier carpeta. Podremos volver a activarlo una vez terminemos con la configuración de los permisos.
?Navegar hasta la carpeta donde se encuentra la BD y sobre dicha carpeta, pulsar el botón secundario, acceder a Propiedades, pestaña Seguridad y pulsar el botón Agregar.
?En la ventana que se abre, añadir el usuario IUSR_nombre_maquina. Por ejemplo, si la máquina es DESKTOP, el usuario a añadir sería IUSR_DESKTOP. Aceptamos.
?Vemos que se ha añadido el usuario Cuenta de usuario para internet. Seleccionar y marcar Control total.
Con esto se soluciona el problema de los permisos de escritura y desaparece el mensaje de error, actualizándose correctamente los registros.

Si se desea, puede volver a activarse la opción Utilizar uso compartido simple de archivos, que desactivamos para tener acceso a la pestaña Seguridad en las propiedades de la carpeta.

Listo ya queda funcionando con los permisos anonimos de windows!!!!! :)

osmansystem

02/10/2011
Error la operación debe usar una consulta actualizable
Este error suele darse en máquinas que corren sobre el sistema operativo Windows XP, existen varias soluciones. Una de ellas, y la que yo utilicé, comprendía la reconfiguración de los permisos de la carpeta donde se ubica la base de datos (también pueden modificarse únicamente los permisos del fichero *.mdb de la BD) para los usuarios que acceden a través de internet. Para ello basta seguir los siguientes pasos:

- Asegurarnos de que tenemos desactivada la opción Utilizar uso compartido simple de archivos, accesible a través del menú Herramientas > Opciones de carpeta? > Ver desde cualquier carpeta. Podremos volver a activarlo una vez terminemos con la configuración de los permisos.
- Navegar hasta la carpeta donde se encuentra la BD y sobre dicha carpeta, pulsar el botón secundario, acceder a Propiedades, pestaña Seguridad y pulsar el botón Agregar.
- En la ventana que se abre, añadir el usuario IUSR_nombre_maquina. Por ejemplo, si la máquina es DESKTOP, el usuario a añadir sería IUSR_DESKTOP. Aceptamos.
- Vemos que se ha añadido el usuario Cuenta de usuario para internet. Seleccionar y marcar Control total.
Con esto se soluciona el problema de los permisos de escritura y desaparece el mensaje de error, actualizándose correctamente los registros.

Si se desea, puede volver a activarse la opción Utilizar uso compartido simple de archivos, que desactivamos para tener acceso a la pestaña Seguridad en las propiedades de la carpeta.

Listo ya queda funcionando con los permisos anonimos de windows!!!!! :)

Jorge

16/3/2012
conexion a base de datos SQL Server 2005
Hola soy nuevo en asp y tengo mi siguiente codigo en VBScript para hacer la conexion con la base de datos, pero no me hace nada, no se si se tenga que hacer alguna configuracion en la odbc???

<%

dim conexion
set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "Provider=SQLNCLI.1;" & _
"Data Source=.;" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"DataBase=ejemplo"
conexion.Open

response.write("conexion realizada...")

conexion.close

%>