Ya estamos familiarizados con la realización de operaciones de bases de datos en ASP llamando a procedimientos almacenados de SQL Server, pero ¿sabía que también podemos crear y utilizar procedimientos almacenados en la base de datos Access a nivel de escritorio?
Access + ASP es una combinación excelente para desarrollar aplicaciones web ligeras: simple, rápida y compatible, pero el rendimiento no suele ser alto. Además, existen algunos inconvenientes al utilizar objetos ADODB.Connection y Recordset para ejecutar declaraciones SQL, porque los valores de los parámetros de las declaraciones SQL con parámetros a menudo se empalman en cadenas, por lo que surgen problemas como las comillas simples. Una ventaja de utilizar procedimientos almacenados es que admiten el suministro adicional de valores de parámetros de sentencias SQL.
De hecho, los llamados procedimientos almacenados en Access (2000 y superiores) son incomparables con los procedimientos almacenados en SQL Server. Solo puede considerarse como Procedimiento almacenado Lite, no admite múltiples declaraciones SQL, no admite declaraciones lógicas (jaja, después de todo no es T-SQL), etc. Aún no sé si está precompilado. Sin embargo, así como las llamadas clases implementadas por VBScript solo están encapsuladas y promueven en gran medida el embellecimiento de la estructura del código y la reutilización del programa, los procedimientos almacenados livianos de Access también deberían ser útiles para estandarizar y minimizar la probabilidad de errores en las operaciones de la base de datos, y se puede mejorar el rendimiento.
A continuación explicaré paso a paso cómo crear un procedimiento almacenado en Access para luego usarlo en un programa ASP.
(1) Crear un procedimiento almacenado en Access
No sé qué tan bien todos usan Access. De todos modos, para mí, es solo una herramienta para crear archivos de bases de datos MDB. Solo creo nuevos archivos MDB y luego creo tablas, índices, restricciones, etc. terminado ~
Las consultas en Access desempeñan el papel de procedimientos almacenados. Los procedimientos almacenados de Access o las consultas que menciono a continuación se refieren a esto.
Para la creación de consultas, Access proporciona una herramienta útil, similar al asistente para crear un DataAdapter en VS.NET. Pero me gusta escribir código SQL directamente.
Luego haga clic en el botón de consulta a la izquierda en la interfaz principal de Access y luego haga doble clic en Crear consulta en la vista Diseño a la derecha para abrir la vista de diseño de la consulta.
En este momento, aparece el generador de consultas visuales. Primero agregamos las tablas que debe incluir la declaración SQL.
Después de agregar la tabla, haga clic derecho en la vista de diseño y seleccione Vista SQL para cambiar a la ventana de edición de código SQL.
Bien, hablemos de las características de los procedimientos almacenados de Access.
Mi sensación actual es que la consulta de Access es un contenedor para la declaración SQL, tal vez con alguna optimización, como la precompilación. No podemos utilizar múltiples operaciones, transacciones, juicios lógicos, bucles, etc. como escribir procedimientos almacenados en SQL Server...
Pero el objetivo principal de utilizar procedimientos almacenados de Access es utilizar consultas proporcionadas por parámetros adicionales. Al utilizar procedimientos almacenados, ya no tenemos que enfrentar los diversos problemas encontrados al unir valores de parámetros en cadenas de declaraciones SQL, como:
Código:
sql tenue
sql = SELECCIONAR * DE Usuarios DONDE Nombre de usuario = ' & Nombre de usuario & '
En el código anterior, si la variable de cadena nombre de usuario contiene comillas simples, se informará un error. Tenemos que convertir manualmente:
Código:
sql tenue
sql = SELECT * FROM Users WHERE UserName = ' & Reemplazar(userName, ', '') & '' se convierte en dos comillas simples consecutivas
Usando una consulta con parámetros, nuestra declaración SQL se puede escribir como:
Código:
sql tenue
sql = SELECCIONAR * DE Usuarios DONDE Nombre de Usuario = @Nombre de Usuario
Luego simplemente pase el valor del parámetro @userName usando la propiedad Parameter del objeto Command, lo cual es muy conveniente e intuitivo.
Código:
con comando
'Crear objeto de parámetro
.Parameters.Append .CreateParameter(@nombredeusuario)
'Especificar valores para cada parámetro
.Parámetros(@nombredeusuario) = Nombre de usuario
Terminar con
Aquí también explicamos el uso de parámetros en los procedimientos almacenados de Access. A diferencia de los procedimientos almacenados de SQL Server, que utilizan variables @ para especificar parámetros y luego pasan objetos de parámetros con el mismo nombre, los parámetros en Access se identifican por orden en lugar de por nombre. No es necesario especificar un nombre para los parámetros pasados. Puede nombrarlos de forma informal. Los nombres de los parámetros en SQL también se pueden nombrar de forma informal. Siempre que los valores de los parámetros se pasen, deben especificarse en el orden. en el que los parámetros aparecen en la declaración SQL. Por lo general, usamos el método Ejecutar del objeto Comando y pasamos directamente la matriz de valores del parámetro para ejecutar ~
Código:
cmd.Ejecutar, Matriz(nombre de usuario)
Para otro ejemplo, uno de sus procedimientos almacenados de Access está escrito así:
Código:
seleccione * de Usuarios donde Nombre de usuario = p_Nombre de usuario y Título del libro = p_título del libro
Puedes hacerlo de esta manera, pasando una matriz de valores de parámetros, pero en el orden correcto:
Código:
cmd.Ejecutar, Array(nombre de usuario, título del libro)
Bien, veamos las dos consultas utilizadas en nuestro ejemplo, una es para escribir datos. Después de escribir la declaración SQL, guárdela y asígnele un nombre.
Otro código de procedimiento almacenado que lee datos.
(2) Usar procedimientos almacenados
Luego podemos llamar a estos procedimientos almacenados en el programa ASP.
Aquí puede ver por qué dije que la consulta en Access es su procedimiento almacenado: la propiedad CommandType de nuestro objeto Command está establecida en 4, que es Stored Proc.
entonces...
El siguiente código es muy simple:
Código:
<%
Opción explícita
tenue
Aleatorizar
s = Ronda * 100
Conexión tenue, cmd
Establecer conexión = Server.CreateObject(ADODB.Connection)
Establecer cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Fuente de datos= & Server.MapPath(sp.mdb)
con comando
.ActiveConnection = conexión
.CommandType = &H0004 'Procedimiento almacenado
.CommandText = AgregarNuevosDatos
Terminar con
cmd.Ejecutar, Array(CStr(Now()), CSng(s))
con comando
.ActiveConnection = conexión
.CommandType = &H0004 'Procedimiento almacenado
.CommandText = ObtenerDatos
Terminar con
Resultado tenueRS, matriz de resultados
Establecer resultadoRS = cmd.Execute(, Nulo)
Si no es el resultadoRS.EOF Entonces
resultArray = resultadoRS.GetRows()
Terminar si
Establecer resultadoRS = Nada
Establecer cmd = Nada
conexión.Cerrar
Establecer conexión = Nada
Respuesta.Escribir <ul>
Yo tenue
Para i = 0 a UBound(resultArray, 2)
Respuesta.Escribir <li> & resultArray(0, i)
Respuesta. Escritura y matriz de resultados (1, i)
Respuesta. Escritura y matriz de resultados (2, i)
Respuesta.Escribir </li>
Próximo
Respuesta.Escribir </ul>
%>