Para los usuarios de ASP, cuanto más simple sea la operación de la base de datos, más tiempo tendrán para considerar la lógica y el código de la aplicación, y la eficiencia será mayor.
Hoy estoy aquí para brindarles una idea del funcionamiento de la base de datos. Estos códigos se completan y modifican constantemente en mi aplicación ASP a largo plazo. También he completado muchos proyectos con él. problema al usarlo directamente. Por supuesto, mis habilidades son limitadas, así que espero que todos puedan discutirlo juntos.
Nota: Los códigos de esta publicación son todas versiones de VBScript. Además, lo mejor es que ya tengas cierta base en la escritura a mano ASP.
Primero, permítanme presentarles brevemente algunas características de mi clase:
Se pueden operar simultáneamente múltiples bases de datos de diferentes tipos.
No es necesario considerar la diferencia en los tipos de datos en absoluto, y no es necesario pensar si se deben agregar comillas simples a los campos de caracteres.
La llamada es muy simple y la operación principal en la base de datos generalmente requiere solo una línea de código.
Admite reversión de transacciones mssql.
Las declaraciones SQL se pueden generar y generar automáticamente para facilitar la depuración.
Cómo utilizar:
1. Modifique la primera línea del archivo clsDbctrl.asp a la ubicación de su propia base de datos (consulte la descripción de la función CreatConn a continuación para conocer el método de modificación). Si necesita conectarse a varias bases de datos, puede agregarlas usted mismo, con el mismo formato.
2. Incluya este archivo asp en su nuevo archivo asp. como:
<!--#include file="Inc/clsDbctrl.asp" --> O:
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Utilice el siguiente código para aplicar esta clase:
Una conexión de base de datos:
<%
OpenConn() 'Abrir conexión a base de datos
Dim db: Establecer db = Nuevo DbCtrl 'Crear objeto
'Tu código aquí...
Co(db) : CloseConn() 'Libera el objeto y cierra la conexión a la base de datos
%>
O (una o más conexiones de base de datos):
<%
Dim db1: Establecer db1 = Nuevo DbCtrl: db1.dbConn = Oc(a)
Dim db2: Establecer db2 = Nuevo DbCtrl: db2.dbConn = Oc(b)
'Tu código aquí...
Co(db1) : Co(db2)
%>
4. Para ejemplos de operación específicos, consulte los ejemplos de código en la descripción de cada función.
Descripción general de métodos y propiedades (el uso detallado y los ejemplos se encuentran a continuación):
Cita:
CreatConn genera una cadena de conexión a la base de datos
Oc establece conexión a la base de datos
Objeto de liberación conjunta
OpenConn abre la conexión de base de datos predeterminada
CloseConn cierra la conexión de base de datos predeterminada
Propiedad dbCtrl.dbConn, obtiene la conexión de la base de datos a operar, el valor predeterminado es Conn
Propiedad dbCtrl.dbErr, de solo lectura, genera el mensaje de error capturado
Propiedad dbCtrl.Version, solo lectura, información de versión del programa
Método dbCtrl.AutoId, obtiene automáticamente el número de serie único
Método dbCtrl.GetRecord para obtener un conjunto de registros que cumpla las condiciones
Método dbCtrl.GetRecordBySql, obtiene el conjunto de registros según la declaración SQL
Método dbCtrl.GetRecordDetail, basado en los datos detallados de un registro específico
Método dbCtrl.AddRecord, agrega un nuevo registro
Método dbCtrl.UpdateRecord, actualiza registros según condiciones especificadas
Método dbCtrl.DeleteRecord, elimina registros que cumplen las condiciones
El método dbCtrl.ReadTable obtiene el contenido de otros campos en un registro según condiciones específicas.
Método dbCtrl.C, cierra el objeto del conjunto de registros
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wActualizarRegistro,
dbCtrl.wDeleteRecord Estos cuatro métodos son declaraciones SQL que obtienen las operaciones correspondientes (precedidas por w)
Convención de parámetros:
Dado que ASP no tiene un objeto Argumentos y no puede usar parámetros dinámicos, en el código de esta clase se usa Array para lograr este efecto. Algunos parámetros de esta clase pueden usar matrices (como se indica en la descripción del parámetro), pero se debe seguir el siguiente formato al usar matrices:
Matriz("Campo1:Valor1", "Campo2:Verdadero", "Campo3:100")
Sí, es un poco como el formato json. Si hay variables involucradas, entonces es así:
Matriz("Campo1:" & Valor1, "Campo2:" & Valor2, "Campo3:" & Valor3)
Se puede decir que casi todo el contenido relacionado con los campos de la base de datos en esta clase puede usar el formato de matriz anterior para establecer condiciones u obtener contenido. La característica más importante aquí es que no es necesario considerar el tipo de campo al usarlo. Simplemente siga el campo con dos puntos y luego el valor correspondiente. Si suele escribir programas ASP a mano, pronto sentirá el encanto de utilizar este método. Además del tipo de datos, también es muy conveniente agregar y eliminar condiciones en cualquier momento. No importa si aún no sabes cómo usarlo, hay muchos ejemplos a continuación para ilustrar este problema.
En realidad, no es difícil encapsular las operaciones de la base de datos de ASP. Creo que ya ha creado un código similar antes o ha tomado prestado el código encapsulado de otras personas. Pero como todo el mundo sabe, una vez que se produce un error al utilizar código encapsulado, la depuración es un asunto problemático. En términos generales, cuanto más simple sea la operación encapsulada, más complicada será la depuración. Cuando escribí estos códigos, hice todo lo posible para considerar cómo solucionar errores si algo sale mal. Mientras simplifico el código para que los usuarios operen la base de datos tanto como sea posible, puedo generar declaraciones SQL en cualquier momento para solucionar errores.
Finalmente, cabe señalar que las operaciones de bases de datos ASP involucradas en este artículo no son adecuadas para datos de gran tamaño. Como usted sabe, es mejor utilizar procedimientos almacenados para operar con datos de gran tamaño. En el futuro, consideraré la operación de procedimientos almacenados. . También encapsulado. También existe una cuestión de eficiencia. Si desea lograr una alta eficiencia, aún debe considerar COM+ cuando use ASP. De nuevo, esta categoría es adecuada para proyectos ASP pequeños y medianos.
Bien, aquí están las instrucciones detalladas de uso:
uno. Conexión de base de datos
Teniendo en cuenta los hábitos de uso de la mayoría de las personas, se utiliza un proceso público para la conexión a la base de datos, por lo que todos deben modificarlo en el código. Si ya ha establecido una conexión a la base de datos, simplemente comente estas líneas. El código tiene cuatro métodos de conexión de bases de datos integrados: MSSql, Access, MySQL y Oracle. Por supuesto, también puede agregarlos o eliminarlos en el código fuente. Modificar ejemplo:
Dim a: a = CreatConn(0, "TestData", "localhost", "nombre de usuario", "contraseña de usuario")
Dim b : b = CreatConn(1, "Datos/%TestDb%.mdb", "", "", "")
Para explicarlo, el primer parámetro puede ser una cadena. Si está utilizando Access, puede ingresar tanto una ruta relativa como una ruta absoluta en el segundo parámetro. Si tiene una contraseña, también puede ingresarla en el quinto parámetro, como por ejemplo:
Dim c : c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Funciones relacionadas:
Prototipo: CreateConn(dbType, strDB, strServer, strUid, strPwd)
Función: establecer una cadena de conexión a la base de datos
Valor de retorno: cadena
parámetro:
dbType: tipo de base de datos de conexión de cadena o entero
(0 o "MSSQL") - Microsoft SQL Server
(1 o "ACCESO") - Microsoft Office Access
(2 o "MYSQL") - Servidor MySQL
(3 o "ORACLE") - servidor Oracle
strDB: nombre de la base de datos de cadena o dirección de la base de datos (el acceso puede usar rutas absolutas o relativas)
strServer: dirección del servidor de base de datos de cadena, déjelo en blanco para Access.
strUid: nombre de usuario de la base de datos de cadena, déjelo en blanco para Access.
strPwd: contraseña de la base de datos de cadena
Prototipo: Oc(connStr)
Función: Abrir conexión de base de datos
Valor de retorno: objeto de conexión de base de datos de objetos
parámetro:
connStr: cadena de conexión de base de datos, generada por la función CreateConn
Prototipo: Co(obj)
Función: cerrar objeto
parámetro:
obj: Objeto El nombre del objeto a cerrar.
Prototipo: OpenConn
Función: abra la conexión de base de datos predeterminada y cree automáticamente un objeto de conexión llamado Conn.
Parámetros: ninguno
Prototipo: CloseConn
Función: cerrar el objeto de conexión de base de datos predeterminado llamado Conn
Parámetros: ninguno
2. Operaciones de base de datos
La siguiente es la descripción de la función de esta clase de operación de base de datos. Debe considerarse como un manual. Consulte los ejemplos de aplicación.
Prototipo: dbCtrl.dbConn(objConn)
Función: obtener el objeto de conexión de la base de datos
parámetro:
objConn: Objeto El objeto de conexión de base de datos que se ha establecido
Ejemplo:
Dim db: Establecer db = Nuevo DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Co(db)
Descripción: este atributo es opcional. Si no se especifica este atributo, la conexión de datos predeterminada es el objeto de conexión de base de datos denominado Conn en la página.
Prototipo: dbCtrl.AutoID (Nombre de tabla)
Función: Obtener automáticamente un número de serie único (numeración automática)
Valor de retorno: entero
parámetro:
TableName: Cadena El nombre de la tabla de datos cuyo número de serie único debe obtenerse
Ejemplo:
nuevoId tenue
nuevoId = db.AutoId("TestTable")
Respuesta.Escribir(nuevoId)
Prototipo: dbCtrl.GetRecord (Nombre de tabla, Lista de campos, Condición, Campo de pedido, Mostrar N)
Función: Obtener el conjunto de registros que cumple las condiciones.
Valor de retorno: objeto de conjunto de registros de objeto
parámetro:
TableName: nombre de la tabla de cadenas
FieldsList: nombres de campos de cadena, separados por comas, déjelos en blanco para mostrar todos los campos
Condición: Condición de consulta de cadena o matriz. Si es una matriz, debe seguir la convención de parámetros anterior.
orderField: método de clasificación de cadenas
ShowN: Integer obtiene el número de registros, equivalente a Seleccionar N superior en SQL
Ejemplo:
atenuados
Establecer rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' And IsActive = 1","fName Asc", 0)
Mientras no sea rs.eof
Response.Write ("El nombre es:" & rs(1) & "La edad es:" & rs(2) & "<br />")
rs.movenext()
Encaminarse a
db.C(rs)
Para el ejemplo anterior, especificar las condiciones en el siguiente formato de matriz es equivalente:
Establecer rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
Además, puede utilizar la siguiente declaración para ver la declaración SQL generada por esta función:
Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0))
Como puede ver, simplemente agregue una w antes de la función original.
Prototipo: dbCtrl.GetRecordBySQL(strSelect)
Función: obtener un conjunto de registros basado en una declaración SQL
Valor de retorno: objeto de conjunto de registros de objeto
parámetro:
strSelect: instrucción SQL de cadena utilizada para generar un conjunto de registros
Ejemplo:
atenuados
Set rs = db.GetRecordBySQL ("Seleccione a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
'Tu código aquí...
db.C(rs)
Prototipo: dbCtrl.GetRecordDetail (Nombre de tabla, Condición)
Función: Basado en datos detallados de un registro específico
Valor de retorno: objeto de conjunto de registros de objeto
parámetro:
TableName: nombre de la tabla de cadenas
Condición: Condición de consulta de cadena o matriz. Si es una matriz, debe seguir la convención de parámetros anterior.
Ejemplo:
rs tenues, identificación
Identificación = Solicitud.QueryString("identificación")
Establecer rs = db.GetRecordDetail("TestTable","Id=" & id)
'Tu código aquí...
db.C(rs)
Descripción: como ya puede ver, esto se usa más comúnmente para abrir una página detallada (como una página de contenido de noticias).
Prototipo: dbCtrl.AddRecord(TableName, ValueList)
Función: Agregar un nuevo registro
Valor de retorno: número de identificación del nuevo registro (éxito) o 0 (fracaso)
parámetro:
TableName: nombre de la tabla de cadenas
ValueList: los campos de matriz y los valores insertados en la tabla solo pueden ser matrices y deben seguir las convenciones de parámetros anteriores
Ejemplo:
Dim fNombre, fSexo, fAñoTrabajo, fNacimiento
fNombre = "Wang Ertan"
fSexo = "masculino"
fAñoTrabajo = 12
fNacimiento = Cfecha("1981-10-23")
resultado oscuro
resultado = db.AddRecord("TestTable",Array("Nombre:"&fNombre, "Sexo:"&fSexo, "AñoTrabajo:"&fAñoTrabajo, "Cumpleaños:"&fNacimiento, "IsActive:True"))
Si resultado<>0 Entonces
Response.Write ("¡Agregó registro correctamente! El ID de numeración automática de este registro es "& resultado)
Terminar si
Verás, realmente no necesitas considerar el tipo de campo.
Si quieres ver los campos y valores del código con mayor claridad, también puedes escribirlo así, pero depende de tu preferencia:
resultado = db.AddRecord("TestTable",Array("Nombre:" & fName,_
"Sexo:" & fSexo,_
"AñoTrabajo:" & fAñoTrabajo,_
"Cumpleaños:" & fNacimiento,_
"IsActive: Verdadero"))
Además, puede utilizar la siguiente declaración para ver la declaración SQL generada por esta función:
Response.Write(db.wAddRecord("TestTable",Array("Nombre:"&fName, "Sexo:"&fSex, "WorkYear:"&fWorkYear, "Cumpleaños:"&fBirth, "IsActive:True")))
Nota: El valor de ID devuelto utiliza un método relativamente estúpido, que no garantiza la precisión cuando la cantidad de datos simultáneos es grande. Úselo con precaución.
Prototipo: dbCtrl.UpdateRecord (Nombre de tabla, Condición, Lista de valores)
Función: Actualizar registros según condiciones específicas
Valor de retorno: 1 (éxito) o 0 (fracaso)
parámetro:
TableName: nombre de la tabla de cadenas
Condición: Condición de actualización de cadena o matriz, si es una matriz, debe seguir la convención de parámetros anterior
ValueList: campos y valores actualizados de cadena o matriz. Si es una matriz, debe seguir la convención de parámetros anterior.
Ejemplo:
Dim fName, fWorkYear
fNombre = "Wang Santan"
fAñoTrabajo = 10
resultado oscuro
resultado = db.UpdateRecord("TestTable", "UId = 1308", Array("Nombre:"&fName, "WorkYear:"&fWorkYear))
Si resultado<>0 Entonces
Response.Write ("¡Actualice los datos correctamente!")
Terminar si
Además, puede utilizar la siguiente declaración para ver la declaración SQL generada por esta función:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Nombre:"&fName, "WorkYear:"&fWorkYear)))
Prototipo: dbCtrl.DeleteRecord (Nombre de tabla, Nombre de campo ID, Valores ID)
Función: Eliminar registros que cumplan las condiciones.
Valor de retorno: 1 (éxito) o 0 (fracaso)
parámetro:
TableName: nombre de la tabla de cadenas
IDFieldName: Cadena El nombre del campo Id. de la tabla
IDValues: condición de eliminación de cadena o matriz, que pueden ser varios números de identificación separados por comas. Si es una matriz, debe seguir la convención de parámetros anterior.
Ejemplo:
ID tenues, resultado
ids = Request.Form("selectid") 'Puedes asumir que los valores obtenidos aquí son 12, 34, 256, 314 (los valores enviados por la casilla de verificación son así)
resultado = db.DeleteRecord("TestTable", "UId", identificadores)
Si resultado<>0 Entonces
Response.Write ("¡Elimine datos correctamente!")
Terminar si
Por supuesto, también puedes especificar otras condiciones usando cadenas o matrices, como por ejemplo:
resultado = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")
Además, puede utilizar la siguiente declaración para ver la declaración SQL generada por esta función:
Response.Write(db.wDeleteRecord("TestTable", "UId", ids))
Prototipo: dbCtrl.ReadTable (Nombre de tabla, Condición, GetFieldNames)
Función: obtener el contenido de otros campos en un registro según condiciones específicas
Valor de retorno: Cadena (GetFieldNames es un solo campo) o Matriz (GetFieldNames es varios campos)
parámetro:
TableName: nombre de la tabla de cadenas
Condición: Condición de consulta de cadena o matriz. Si es una matriz, debe seguir la convención de parámetros anterior.
GetFieldNames: cadena Un nombre de campo único o varios nombres de campo separados por comas
Ejemplo:
Líquido tenue, resultado
uid = rs("postid") 'Supongamos que este es el valor de identificación de usuario en un registro establecido en la página
resultado = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Editor:" y resultado)
Debo decir que en aplicaciones reales, esta función es probablemente la más utilizada. Lo que ves arriba es un ejemplo muy común de obtener otro campo en otra tabla cuyo valor es igual a ese valor. un poco difícil de pronunciar, pero eso es lo que significa). El siguiente ejemplo le mostrará cómo obtener varios valores correspondientes en función de este valor.
Líquido tenue, resultado
uid = rs("postid") 'Supongamos que este es el valor de identificación de usuario en un registro establecido en la página
resultado = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserEge")
Response.Write("Editor:" & resultado(0) & "<br /> Género: " & resultado(1) & "<br /> Edad: " &result(2))
Como puede ver, es así de simple. Ingresar varios nombres de campos da como resultado una matriz.
Prototipo: dbCtrl.C(objRs)
Función: cerrar el objeto del conjunto de registros
parámetro:
objRs: Objeto Un objeto de conjunto de registros en la página.
Ejemplo:
atenuados
Establecer rs = db.GetRecordDetail("TestTable","Id=123" )
'Tu código aquí...
db.C(rs)
Esta función se ha utilizado en muchos ejemplos anteriores, por lo que no la explicaré mucho. Es equivalente a rs.close: set rs = nada.
clsDbctrl.rar