Мы уже знакомы с выполнением операций с базой данных в ASP путем вызова хранимых процедур SQL Server, но знаете ли вы, что мы также можем создавать и использовать хранимые процедуры в Access на уровне рабочего стола?
Access + ASP — отличное сочетание для разработки легких веб-приложений: простое, быстрое и совместимое, но производительность обычно невысокая. Более того, есть некоторые неудобства при использовании объектов ADODB.Connection и Recordset для выполнения операторов SQL, поскольку значения параметров операторов SQL с параметрами часто объединяются в строки, поэтому возникают такие проблемы, как одинарные кавычки. Одним из преимуществ использования хранимых процедур является то, что они поддерживают дополнительное предоставление значений параметров инструкции SQL.
Фактически, так называемые хранимые процедуры в Access (2000 и более поздние версии) несопоставимы с хранимыми процедурами в SQL Server. Его можно рассматривать только как хранимую процедуру Lite, он не поддерживает несколько операторов SQL, не поддерживает логические операторы (ха-ха, в конце концов, это не T-SQL) и т. д. Я еще не знаю, предварительно скомпилирован ли он. Однако, поскольку так называемые классы, реализованные с помощью VBScript, лишь инкапсулированы и значительно способствуют улучшению структуры кода и возможности повторного использования программы, облегченные хранимые процедуры Access также должны быть полезны для стандартизации и минимизации операций с базами данных с вероятностью ошибки, а производительность может быть улучшена.
Ниже я шаг за шагом объясню, как создать хранимую процедуру в Access, а затем использовать ее в программе ASP.
(1) Создайте хранимую процедуру в Access.
Я не знаю, насколько хорошо все используют Access. В любом случае для меня это просто инструмент для создания файлов базы данных MDB, а затем создаю таблицы, индексы, ограничения и т. д. в интерфейсе Access. закончилось~
Запросы в Access играют роль хранимых процедур. Все хранимые процедуры или запросы Access, которые я упоминаю ниже, относятся к этой вещи.
Для создания запросов Access предоставляет простой инструмент, похожий на мастер при создании DataAdapter в VS.NET. Но мне нравится писать код SQL напрямую
Затем нажмите кнопку запроса слева в главном интерфейсе Access, а затем дважды щелкните Создать запрос в представлении «Дизайн» справа, чтобы открыть представление «Дизайн запроса».
В это время появляется визуальный построитель запросов. Сначала мы добавляем таблицы, которые должен использовать оператор SQL.
После добавления таблицы щелкните правой кнопкой мыши представление «Дизайн» и выберите «Представление SQL», чтобы переключиться в окно редактирования кода SQL.
Хорошо, давайте поговорим о характеристиках хранимых процедур Access.
В настоящее время я считаю, что запрос Access является оболочкой для оператора SQL, возможно, с некоторой оптимизацией, такой как предварительная компиляция. Мы не можем использовать несколько операций, транзакций, логических суждений, циклов и т. д., например, писать хранимые процедуры SQL Server...
Но основная цель использования хранимых процедур Access — использовать запросы, предоставляемые дополнительными параметрами. Используя хранимые процедуры, нам больше не приходится сталкиваться с различными проблемами, возникающими при объединении значений параметров в строки операторов SQL, таких как:
Код:
Тусклый sql
sql = SELECT * FROM Users WHERE UserName = ' & userName & '
В приведенном выше коде, если строковая переменная userName содержит одинарные кавычки, будет сообщено об ошибке. Нам придется конвертировать вручную:
Код:
Тусклый sql
sql = SELECT * FROM Users WHERE UserName = ' & replace(userName, ', '') & '' преобразуется в две последовательные одинарные кавычки
Используя запрос с параметрами, наш оператор SQL можно записать так:
Код:
Тусклый sql
sql = SELECT * FROM Users WHERE UserName = @userName
Затем просто передайте значение параметра @userName, используя свойство параметра объекта Command, что очень удобно и интуитивно понятно.
Код:
С помощью cmd
'Создать объект параметра
.Parameters.Append .CreateParameter(@userName)
'Указываем значения для каждого параметра
.Parameters(@userName) = имя пользователя
Конец с
Здесь мы также объясняем использование параметров в хранимых процедурах Access. В отличие от хранимых процедур SQL Server, которые используют переменные @ для указания параметров, а затем передают объекты параметров с тем же именем, параметры в Access идентифицируются по порядку, а не по имени. Нет необходимости указывать имя для передаваемых параметров. Вы можете называть их случайным образом. Имена параметров в SQL также могут быть названы случайным образом. Если значения параметров передаются, их следует указывать в порядке. в котором параметры появляются в инструкции SQL. Обычно мы используем метод Execute объекта Command и напрямую передаем массив значений параметров для выполнения ~
Код:
cmd.Execute, Массив (имя пользователя)
Другой пример: одна из хранимых процедур Access написана следующим образом:
Код:
выберите * из пользователей, где UserName = p_UserName и BookTitle = p_bookTitle
Вы можете просто сделать это следующим образом, передав массив значений параметров, но в правильном порядке:
Код:
cmd.Execute, Array(имя пользователя, название книги)
Хорошо, давайте посмотрим на два запроса, используемые в нашем примере: один предназначен для записи данных. После написания оператора SQL сохраните его и назовите.
Еще один код хранимой процедуры, считывающий данные.
(2) Использование хранимых процедур
Затем мы можем вызвать эти хранимые процедуры в программе ASP.
Здесь вы можете понять, почему я сказал, что запрос в Access является его хранимой процедурой: свойство CommandType нашего объекта Command установлено в значение 4, что соответствует Stored Proc!
так...
Следующий код очень прост:
Код:
<%
Опция явная
Дим с
Рандомизировать
с = круг * 100
Тусклый контакт, cmd
Установите conn = Server.CreateObject(ADODB.Connection)
Установите cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0 Источник данных= & Server.MapPath(sp.mdb);
С помощью cmd
.ActiveConnection = подключение
.CommandType = &H0004 'Сохраненная процедура
.CommandText = ДобавитьНовыеДанные
Конец с
cmd.Execute, Array(CStr(Now()), CSng(s))
С помощью cmd
.ActiveConnection = подключение
.CommandType = &H0004 'Сохраненная процедура
.CommandText = ПолучитьДанные
Конец с
Тусклый результатRS, resultArray
Установить результатRS = cmd.Execute(, Null)
Если Нет, то результатRS.EOF Тогда
resultArray = resultRS.GetRows()
Конец, если
Установить результатRS = Ничего
Установить cmd = Ничего
конн.Закрыть
Установить соединение = Ничего
Response.Write <ul>
Дим я
Для i = 0 To UBound(resultArray, 2)
Response.Write <li> и resultArray(0, i)
Response.Write & resultArray(1, i)
Response.Write & resultArray(2, i)
Ответ.Написать </li>
Следующий
Ответ.Написать </ul>
%>