Asp - робота з базами даних

Мабуть жоден серйозний сайт не може обійтися без баз даних. Будь то форум, гостьова книга або навіть чат, бази даних скрізь, вони зручні і практичні, хоча звичайно, як і всі в нашому світі, мають свої недоліки, але мова зараз не про це. ASP (Active Server Page) для роботи з базами даних використовує бібліотеку ADO (ActiveX Data Objects), яка входить до складу набору компонентів MDAC (Microsoft Data Access Components - знайти можна на сайті компанії Microsoft). У цій статті я розповім про використання ADO при розробці ASP-додатків.

Перш ніж почати роботу безпосередньо з даними, спочатку необхідно «підключити» базу даних. Підключення бази даних здійснюється об'єктом Connection бібліотеки ADO.
Об'єкт Connection можна створити методом CreateObject об'єкта Server:

Dim Conn 'оголошуємо змінну для Connection

'Створюємо об'єкт Connection

Set Conn = Server. CreateObject ( "ADODB.Connection")

У 3-му рядку в змінної Conn передаються властивості об'єкта Connection.

Після створення об'єкта Connection, необхідно, власне, відкрити саму базу даних, робиться це методом Open:

dbpath = Server. MapPath ( "my.mdb")

Conn. Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" dbpath

В 4-му рядку оголошується змінна dbpath, далі, в 5-му рядку, їй присвоюється шлях фактичного розміщення ASP-сторінки на сервері і ім'я файлу бази даних - my.mdb.

І так, тепер база даних у нас приєднана, відкрита і готова, так би мовити, до бою. Для роботи з даними використовується об'єкт Recordset. Створюється Recordset також як і Connection:

Dim RS 'оголошуємо змінну для Recordset

'Створюємо об'єкт Recordset

Set RS = Server. CreateObject ( "ADODB.Recordset")

У 9-му рядку змінної RS передаються властивості об'єкта Recordset.

Всі операції з базою даних виробляються SQL-запитами. SQL (Structured Query Language) - це універсальна мова структурованих запитів для роботи з базами даних, про який вже написано чимало статей і навіть книг. У цій статті SQL буде розглянуто тільки в рамках тематики статті.

Також як і Connection, Recordset потрібно відкрити, для цього також використовується метод Open:

Dim strSQL 'оголошуємо змінну для SQL-запиту

strSQL = "SELECT * FROM tblMain" 'формуємо SQL-запит

RS. Open strSQL, Conn 'відкриваємо Recordset

У 10-му рядку оголошується змінна strSQL, вона нам потрібна для створення SQL-запиту, хоча можна обійтися і без неї, але погодьтеся, так набагато зручніше, ніж вставляти SQL-запит безпосередньо в метод Open.

У 11-му рядку, власне, і є сам запит. Команда SELECT - найбільш часто використовувана інструкція, дозволяє отримати дані з таблиці, в нашому випадку, всі дані з таблиці - tblMain. При роботі з Recordset, інші SQL-команди зазвичай не використовуються.

У 12-му рядку, методом Open, відкривається Recordset с, раніше визначеним, SQL-запитом, в уже відкритої, базі даних Conn.

Для перевірки наявності даних в базі даних, можна використовувати метод BOF і EOF об'єкта Recordset:

If RS. BOF = True Or RS. EOF = True Then 'даних немає

Response. Write ( "
дані відсутні
")

Else 'дані є

RS. MoveLast 'переходимо до останнього запису

RS. MoveFirst 'переходимо до першого запису

Response. Write ( "всього записів в базі даних:" _

RS. RecordCount "
")

Do While Not RS. EOF 'перебираємо всі записи

'Перевіряємо, чи досягнуто кінець бази даних

'Якщо так, то виходимо з циклу

If RS. BOF = True Or RS. EOF = True Then Exit Do

'Виводимо дані з поля id і name

Response. Write (RS. Fileds ( "id") "
")

Response. Write (RS. Fields ( "name") "
")

'Не забуваємо «перегортати» дані

У 13-му рядку перевірятися наявність даних в таблиці бази даних. У разі, якщо буде повернуто значення True, то в 14-му рядку виводиться напис: «дані відсутні».

Писати True, в принципі, не обов'язково, досить просто написати: «If RS.BOF Or RS.EOF Then» - результат буде той же.

Якщо дані в таблиці є, то в 16-17 рядках методом MoveLast і MoveFirst Recordset переходить на останню і перший запис. Це необхідно для точного визначення кількості записів в базі даних. Кількість записів повертається методом RecordCount в 18-19 рядках.

З 20-ої по 29-й рядок відбувається послідовний висновок даних з полів «id» і «name».

Зверніть особливу увагу на 28-й рядок. При відсутності методу MoveNext, вийде нескінченний цикл, а це, як ви самі розумієте, призведе до зависання ASP-програми.

По завершенню роботи з таблицею даних, Recordset, якщо він більше не потрібен, бажано закрити. Закривається Recordset методом Close:

Схожі статті