Este artículo utiliza la DLL generada por VB para encapsular el código ASP para conectarse a la base de datos (tomando la base de datos de Access como ejemplo).
En circunstancias normales, cuando usamos ASP para conectarnos a la base de datos de Access, generalmente realizamos las siguientes operaciones
'//Proconn.asp
<%
dimProConn
establecer ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Controlador de Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'Una base de datos de Access que originalmente era DB.mdb se cambia a un archivo con el sufijo DB.asp y la contraseña de la base de datos es 123
si err.Number <> 0 entonces
ResPonse.Write "No hay ningún enlace a la base de datos, verifique"
Respuesta.Fin
demás
ResPonse.Write "Conexión de base de datos exitosa"
Respuesta.Fin
terminar si
%>
Si el servidor está configurado, acceda a Proconn.asp. Si la conexión de la base de datos es exitosa, se mostrará "Conexión de la base de datos exitosa".
Sin embargo, el nivel de seguridad de dicho código ASP es muy bajo. Si otros ven el ASP original, si existe este archivo de base de datos, otros pueden abrir fácilmente su base de datos para realizar operaciones.
Entonces aquí viene nuestra tarea: ¿cómo encapsular estos contenidos clave?
Primero, debe determinar el método, el método y el objeto.
Después de verificar cierta información en Internet, se encapsula principalmente usando VB para generar DLL, por lo que también deberíamos adoptar este método (aunque en realidad no he usado VB)
para determinar, entonces, ¿cuál es el objeto que necesitamos encapsular? ?
Ven y ve a todos
"controlador={Controlador de Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Es el código más crítico. Debería ser mejor encapsular este código en una DLL generada con VB.
La razón por la que no todo
dimProConn
establecer ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Controlador de Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Todos están encapsulados (porque hay instrucciones en Internet para encapsular todo el código de conexión) porque cuando otros archivos asp hacen referencia a Proconn.asp,
También necesito el ProConn interno para realizar otras operaciones. Si está encapsulado, será inconveniente referenciarlo y operarlo.
(La explicación anterior del objeto de encapsulación es mi opinión personal. Algunos amigos dijeron que la encapsulación general no tiene ningún impacto en el uso de ProConn. No entiendo esto. Dígame si lo sabe)
Solo quiero encapsular la parte más crítica ""driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")"
para analizar este párrafo . el contenido del paquete,
La primera mitad es una cadena:
"controlador={Controlador de Microsoft Access (*.mdb)};uid=;pwd=123;DBQ="
Utilice & para concatenar la segunda mitad de otra cadena.
La otra cadena en la segunda mitad es el valor de retorno de la función del objeto Server.MapPath.
Comencemos el proceso de operación de encapsulación.
Primero, cree un nuevo proyecto DLL ActiveX en VB. ¿Cambiar el nombre del proyecto Proyecto1 a ConDBDLL? ¿Cambiar el nombre del método clase1 a cs?
El nombre del proyecto y el nombre del método se utilizarán al llamar a esta DLL. Puede definirlos de acuerdo con sus propias reglas de nomenclatura, pero tenga cuidado al usarlos.
La parte del código de esta DLL está escrita de la siguiente manera:
Dim rp As Response
Dim rq como solicitud
Atenuar como aplicación
Dim sr como servidor
Atenuar pantalla como sesión
pública sub en página de inicio (MyScriptingContext como ScriptingContext)
Establecer rp = MyScriptingContext.Response
Establecer rq = MyScriptingContext.Request
Establecer sr = MyScriptingContext.Server
Establecer ap = MyScriptingContext.Application
Establecer sn = MyScriptingContext.Session
Fin Sub
Public Sub OnEndPage()
Establecer rp = Nada
Establecer rq = Nada
Establecer sr = Nada
Establecer ap=Nada
Establecer pantalla = Nada
Subtítulo final
'La declaración anterior es necesaria. El objeto original se ha simplificado y procesado en dos funciones públicas
ConnectDB() como variante
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
Función final
'La función anterior procesa la primera mitad de la cadena y devuelve directamente el contenido de esta cadena
' Además, defina la siguiente función para procesar la segunda mitad del contenido
Función pública DBPath() como variante
DBPath = sr.MapPath("DB.asp")
Función final
'Tenga en cuenta que lo anterior usa sr, no lo use como servidor. Ahora hemos
llegado al paso crítico. Agregue la referencia de "Biblioteca de objetos ObjectContext de Microsoft Active Server Pages" a este proyecto.
Para agregar un método, seleccione "Proyecto"->"Referencia" en el menú y selecciónelo en el cuadro de diálogo abierto.
Por cierto, también necesitamos seleccionar "biblioteca de objetos de datos ActiveX 2.6"
para realizar las operaciones anteriores. Podemos compilar y generar DLL (no olvide cambiar el nombre del proyecto y el nombre del método anteriormente).
Prepare el archivo de base de datos
.DB.asp (escrito por DB. mdb se forma cambiando el sufijo, la contraseña es 123)
El siguiente es el código para llamar al archivo asp encapsulado que se conecta a la base de datos:
'//ProConn.asp
<%
dimProConn
establecer ProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
establecer ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB es el objeto DLL creado
Dim StrConn
'Definir una cadena
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'Concatenar las dos partes para formar una cadena
ProConn.OpenStrConn
'Realizar operaciones de objetos de base de datos
%>
Dado que es una DLL creada por usted mismo, después de copiarla en el directorio correspondiente, debe registrarse antes de poder utilizarla.
Método registrado, ejecutado en "Ejecutar":
Regsvr32.exe lyfUpload.dll
El método para cancelar el registro de esta DLL es: Regsvr32.exe /u lyfUpload.dll
Una vez completado el registro, nuestro trabajo básicamente está terminado. Ahora podemos usar dicho método de encapsulación para conectarnos a un objetivo. base de datos.
Sin embargo, hay una cosa que merece especial atención:
porque
DimConDB
establecer ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB es el objeto DLL creado. Este es un objeto creado en ASP, incluido ProConn. Luego, recordamos liberar estos dos objetos en cualquier otro archivo ASP que use (referencia) ProConn.asp.
ProConn.cerrar
setProConn=nada
setConDB=Nada
De lo contrario, el sistema se verá cada vez más saturado porque los objetos no se liberan.
Con respecto a este método de encapsular código ASP para conectarse a la base de datos de Access, creo que es completamente aplicable al método de conexión de otras bases de datos.
Creo que mi método no es el mejor. Si hay alguna deficiencia, corrígeme si lo has leído.