В этой статье используется DLL, созданная VB, для инкапсуляции кода ASP для подключения к базе данных (в качестве примера взята база данных Access).
В обычных обстоятельствах, когда мы используем ASP для подключения к базе данных Access, мы обычно выполняем следующие операции
: //Proconn.asp
<%
димПроКонн
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'База данных Access, которая изначально была DB.mdb, заменяется файлом с суффиксом DB.asp, а пароль базы данных равен 123,
если err.Number <> 0, тогда
ResPonse.Write «Нет ссылки на базу данных, проверьте»
ResPonse.End
еще
ResPonse.Write «Подключение к базе данных выполнено успешно»
ResPonse.End
конец, если
%>
Если сервер настроен, откройте Proconn.asp. Если подключение к базе данных выполнено успешно, будет выведено сообщение «Подключение к базе данных успешно».
Однако уровень безопасности такого кода ASP очень низок. Если исходный код ASP виден другим, то при наличии этого файла базы данных другие могут легко открыть вашу базу данных для операций.
Итак, вот наша задача: как инкапсулировать это ключевое содержимое?
Для начала нужно определиться с методом, методом и объектом.
После проверки некоторой информации в Интернете, она в основном инкапсулируется с использованием VB для генерации DLL, поэтому нам также следует использовать этот метод (хотя я на самом деле не использовал VB),
чтобы определить, какой именно объект нам нужно инкапсулировать ?
Приходи и увидишь всех
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Это наиболее важный код. Лучше инкапсулировать этот код в DLL, созданную с помощью VB.
Причина, почему не весь
димПроКонн
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Все они инкапсулированы (поскольку в Интернете есть инструкции по инкапсуляции всего кода подключения), поскольку, когда другие файлы asp ссылаются на Proconn.asp,
Мне также нужен ProConn внутри для выполнения других операций. Если он инкапсулирован, на него будет неудобно ссылаться и работать.
(Приведенное выше объяснение объекта инкапсуляции является моим личным мнением. Некоторые друзья сказали, что общая инкапсуляция не влияет на использование ProConn. Я этого не понимаю. Расскажите, если знаете)
Я просто хочу инкапсулировать наиболее важную часть ""driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")"
для анализа этого абзаца. . содержимое упаковки,
Первая его половина представляет собой строку:
"driver={Драйвер Microsoft Access (*.mdb)};uid=;pwd=123;DBQ="
Используйте & для объединения второй половины другой строки.
Другая строка во второй половине — это возвращаемое значение объектной функции Server.MapPath.
Начнем процесс операции инкапсуляции.
Сначала создайте новый проект ActiveX DLL в VB. Измените имя проекта Project1 на ConDBDLL?? Измените имя метода class1 на cs.
Имя проекта и имя метода будут использоваться при вызове этой DLL. Вы можете определить их в соответствии со своими правилами именования, но будьте осторожны при их использовании.
Часть кода этой DLL написана следующим образом:
Dim rp As Response
Dim rq как запрос
Dim ap как приложение
Dim sr как сервер
Dim sn As
Public Sub OnStartPage сеанса (MyScriptingContext As ScriptingContext)
Установите rp = MyScriptingContext.Response
Установите rq = MyScriptingContext.Request
Установите sr = MyScriptingContext.Server
Установите ap = MyScriptingContext.Application
Установите sn = MyScriptingContext.Session
Завершить
публичную подписку OnEndPage()
Установить rp = Ничего
Установить rq = Ничего
Установить ср = Ничего
Установить ap=Ничего
Установить sn=Ничего
Конец субтитра
'Приведенное выше утверждение необходимо. Исходный объект был упрощен и обработан с помощью двух основных функций.
Public Function ConnectDB() As Variant
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
Конечная функция
'Вышеупомянутая функция обрабатывает первую половину строки и напрямую возвращает содержимое этой строки
' Кроме того, определите следующую функцию для обработки второй половины содержимого
Открытая функция DBPath() как вариант
DBPath = sr.MapPath("DB.asp")
Конечная функция
'Обратите внимание, что выше используется sr, не используйте его в качестве сервера. Теперь мы
достигли критического шага. Добавьте ссылку на «Библиотеку объектов Microsoft Active Server Pages ObjectContext».
Чтобы добавить метод, выберите в меню «Проект» -> «Ссылка» и выберите его в открывшемся диалоговом окне.
Кстати, нам также нужно выбрать «библиотеку объектов данных Microsoft ActiveX 2.6»
для выполнения вышеуказанных операций. Мы можем скомпилировать и сгенерировать DLL (не забудьте заранее изменить имя проекта и имя метода).
Подготовьте файл базы данных
.DB.asp (написано DB. .mdb формируется путем изменения суффикса, пароль 123).
Ниже приведен код для вызова инкапсулированного asp-файла, который подключается к базе данных:
'//ProConn.asp
<%
димПроКонн
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ДимКонДБ
set ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB — это созданный объект DLL
Dim StrConn
'Определяем строку
StrConn = ConDB.ConnectDB() и ConDB.DBPath()
'Объединяем две части, чтобы сформировать строку
ПроКонн.ОпенСтрКонн
'Выполнение операций с объектами базы данных
%>
Поскольку это DLL, созданная вами, после копирования в соответствующий каталог ее необходимо зарегистрировать, прежде чем ее можно будет использовать.
Зарегистрированный метод, выполняемый в режиме «Выполнить»:
Regsvr32.exe lyfUpload.dll
Метод отмены регистрации этой DLL: Regsvr32.exe /u lyfUpload.dll
После завершения регистрации наша работа в основном завершена. Теперь мы можем использовать такой метод инкапсуляции для подключения к целевому объекту. база данных.
Однако есть одна вещь, которая требует особого внимания:
потому что
ДимКонДБ
set ConDB=Server.CreateObject("ConDBDLL.Conn")
«ConDB — это созданный объект DLL. Это объект, созданный в ASP, включая ProConn. Затем мы не забываем освободить эти два объекта в любых других файлах ASP, которые используют (ссылка) ProConn.asp!
ПроКонн.закрыть
setProConn=ничего
setConDB=Ничего
В противном случае система будет все больше перегружаться, поскольку объекты не будут освобождены.
Что касается этого метода инкапсуляции кода ASP для подключения к базе данных Access, я считаю, что он полностью применим к методу подключения других баз данных.
Я считаю, что мой метод не самый лучший. Если есть какие-то недостатки, поправьте меня, если прочитали. Заранее спасибо.