CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компания Acer сделала наконец официально доступным свой новый ноутбук, рассчитанный на профессиональных ...
Не проходит и дня чтобы производители ни анонсировали какую-нибудь новую материнскую плату, рассчитанную ...
В списке продуктов азиатского производителя Micro-Star International пополнение. Именитый разработчик ...
Производители продолжают работать над заполнением фирменных линеек графических ускорителей NVIDIA ...
Компания Biostar анонсировала в эти дни первую для себя материнскую плату на чипсете AMD X370, который ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Уроки ASP-технологии. Объекты доступа к данным

Алексей СИТНИКОВ sitnikov@ic.ac.kharkov.ua

(Продолжение, начало см. в МК № 8, 11—13, 15, 17—18, 20, 22 (180, 183—184, 186, 188—189, 191, 193))

Сегодня мы продолжим работу над нашей гостевой книгой. В прошлый раз, если вы помните, нами была закончена ее первая часть, то есть скрипт для добавления записей в базу данных. Теперь сделаем модуль визуализации. Для этого создайте сценарий view.asp и добавьте в него следующий код:

Все! Теперь гостевой книгой можно пользоваться. Загрузите в браузер страничку guestbook.htm (естественно, через web-сервер) и протестируйте ее в различных режимах.

Теперь давайте посмотрим, как работает данный сценарий. В первых строчках пишутся стандартные операции: устанавливается язык, на котором написан сценарий, подключается файл включений adovbs.inc, отвечающий за константы ADO. После этого браузеру отправляется текст:

который, как вы уже знаете, отвечает за начало описания таблицы. Затем идет объявление переменных и конструируется полный путь к нашей базе данных. Потом создаются экземпляры объектов ADO Connection и Recordset, после чего устанавливается режим открытия базы данных и строка ConnectionString, в результате соединение открывается. В следующих двух строках мы присваиваем переменной strSql SQL-запрос и делаем по нему выборку из базы данных, результат которой заносится в экземпляр объекта Recordset. После этого начинается формирование и отправка HTML-текста таблицы, в которой прописываются соответствующие значения полей. Затем клиенту посылается текст:

которым и заканчивается пересылка данных. Вот, собственно, и все. Некоторые могут сказать: «Дизайн корявый!» или: «Нет проверки на правильность данных!» или еще что-нибудь. Не спорю. Но я всего лишь хотел показать, как сделать простейшую гостевую книгу с помощью средств ASP и ADO и вовсе не собирался соорудить навороченное web-приложение.

Ну, давайте продолжим знакомство с объектами доступа к данным. Вернемся к нашей базе данных orders.mdb и посмотрим, как изменять данные с помощью ADO. Приведу следующий пример: вследствие неких непредвиденных обстоятельств в нашей базе данных необходимо к имени каждого продукта присоединить строку “.OLD”. Для этого напишем следующий сценарий:

В первых строках происходят стандартные операции: указание языка, на котором написан сценарий, установка опции обязательного объявления переменных, подключение внешнего файла с константами для управления базами данных, объявление используемых переменных, конструирование строки с путем к базе данных, открытие соединения и присвоение SQL-запроса соответствующей переменной. Затем мы с помощью метода Open объекта Recordset делаем выборку из orders.mdb, которая заключается в простом извлечении поля Name_Of_Product в экземпляр означенного объекта. И тут начинается самое интересное: обработка полученной информации. В цикле Do … Loop мы присоединяем к имени каждого продукта строку “.OLD” (это делается с помощью операции конкатенации строк &), затем, с помощью метода Update, заносим сделанные изменения в базу данных и передвигаемся к следующей записи.

В этом примере при выборке из базы данных мы применили один интересный параметр: adLockOptimistic. Это тип блокировки. Вообще, существует четыре типа блокировки при использовании объекта Recordset:

AdLockOptimistic. Оптимистичная блокировка. Если вы будете открывать источник данных с ее использованием, то записи будут блокироваться только при вызове метода Update.

AdLockBatchOptimistic. То же самое, что и первое, но применяется для пакетного обновления.

AdLockPessimistic. Самая жесткая блокировка. При ее использовании перед внесением изменений в базу данных все записи блокируются.

AdLockReadOnly. Блокировка, при которой разрешается только чтение из базы данных (установлен по умолчанию).

Теперь рассмотрим синтаксис метода Open объекта Recordset:

где Rs — это экземпляр объекта Recordset, sql-query — запрос SQL, conn — объект Connection или строка ConnectionString (если в этом свойстве прописана именно эта строка, то ADO создаст объект Connection автоматически; этот метод предпочтительней использовать, когда вы не планируете делать более одного обращения к базе данных), cursor — тип курсора, lock — тип блокировки (описан выше), opt — опции.

Что же такое курсор? Курсор определяет метод, по которому происходит перемещение по записям. Всего существует четыре типа курсоров:

AdOpenForwardOnly. Самый «быстрый» тип курсоров, но также и самый ограниченный. Ограниченность состоит в том, что вы можете использовать только метод MoveNext, то есть имеется возможность прокручивать набор записей только вниз.

AdOpenDynamic. Этот тип позволяет отображать изменения (добавление, удаление, модификация), вносимые другими пользователями. Доступно перемещение по записям в любую сторону.

AdOpenKeyset. Аналогичен предыдущему, но не позволяет модифицировать данные, внесенные или удаленные другими пользователями.

AdOpenStatic. Создает статическую копию записей, в которую, тем не менее, можно вносить изменения. При использовании этого типа курсора вы не увидите изменений, вносимые другими пользователями.

Параметр «опции» сообщает движку ADO, каким образом воспринимать данное обращение: как SQL-запрос, таблицу, хранимую процедуру и т. д. Параметр необязательный, но обычно его стоит указывать, так как это ускоряет выполнение процедуры извлечения данных.

Для того чтобы добавлять записи, можно, кроме SQL-запроса, использовать встроенные средства ActiveX Data Objects. Чтобы не быть голословным, сразу приведу пример:

При выполнении этого сценария продукт «живая вода» добавится в таблицу Products. Думаю, объяснять в общем-то нечего: мы просто поменяли тип блокировки на adLockOptimistic, затем, при помощи метода AddNew перевели объект Recordset в состояние ожидания добавления новой записи, после чего присвоили нужным полям соответствующие значения и вызвали метод Update, который, собственно, и занес наши изменения в базу данных.

Для изменения данных нужно просто перевести курсор на нужную запись, а затем поменять соответствующее поле с помощью конструкции, приведенной выше (применить метод Update).

Для удаления записи нужно, опять-таки, перевести курсор на эту запись, после чего вызвать метод Delete объекта Recordset. Например, чтобы удалить из таблицы Products запись «живая вода», которую мы добавили в прошлом примере, необходимо поменять строки

на

Теперь давайте рассмотрим средства ADO для поиска и фильтрации информации из базы данных. Для первого применяется следующая конструкция:

Посмотрим, что означает каждый параметр.

Criteria. Собственно, главный параметр. Определяет условие, по которому осуществляется поиск.

Rows. Этот параметр определяет количество строк, которое нужно пропустить, прежде чем начать поиск. Необязателен.

Dir. Направление поиска. Принимает два значения (это константы, которые вы можете найти в файле adovbs.inc): adSearchForward и adSearchBackward. Необязателен.

Start. Указывает позицию, с которой начинается поиск. Необязателен.

Приведу простой пример:

После исполнения этого кода в объект Recordset занесется информация о продукте «Вода живая».

Для фильтрации используется следующий способ:

Если вы исполните этот код, то в объекте Recordset окажутся все продукты, имя которых начинается на t. В том-то и отличие поиска от фильтрации: первый довольствуется первой попавшейся записью, удовлетворяющей заданному критерию, второй охватывает все записи. Чтобы отменить фильтр и вернуть набор записей в исходное состояние, необходимо использовать следующую конструкцию:

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov