Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Використання об'єктів підключення і набору записів ADO






Володіючи основами роботи з ADO, можна переходити до написання програм для роботи з ADO в додатках. Ми знову скористаємося засобами ADO для підключення до бази даних Biblio.mdb, але і цього цілком вистачатиме для демонстрації загальних принципів. Почнемо з наступного прикладу і потім перейдемо до програмування:

1. Створіть новий проект командою File > New Project. Виберіть в діалоговому вікні New Project значок Standard EXE і натисніть кнопку ОК.

2. Задайте властивості Name проекту значення ADORecordset.

3. Задайте властивості Name форми Form1 значення frmMain, а властивості Caption – значення «Робота» із наборами записів ADO.

4. Створіть список на формі frmMain і задайте його властивості Name значення 1st Authors.

Як згадувалося раніше, елемент даних ADO є елементом ActiveX. Його можна перетягнути на форму, як і будь-який інший елемент. Об'єкти підключення і набору записів являються DLL - бібліотеками (бібліотеками динамічного компонування) Active, і доступ до них здійснюється тільки за допомогою посилання на бібліотеку типів.

5. Виконаєте в Visual Basic команду Project > References, щоб відкрити діалогове вікно References.

6. Створіть посилання на бібліотеку типів ADO. Для цього слід встановити прапорець поряд з рядком Microsoft ActiveX Data Objects 2.0 (мал. 8.19).

 

Puc. 8.19. Створення посилання на бібліотеку типів ADO

7. Натисніть кнопку OK, щоб створити посилання на бібліотеку і закрити діалогове вікно References. Тепер ви можете використовувати об'єкти підключення і набору записів ADO у своїй програмі.

8. Додайте наступні оголошення в секцію(Declarations) форми:

 

Private cn As ADODB.Connection

Private rs As ADODB.Recordset

 

9. Вставте наступний фрагмент в процедуру події Form_Load:

 

Private Sub Form_Load()

Dim cmd As String

Dim sql As String

Dim cn As ADODB.Connection

Dim rs As ADODB.Recordset

 

‘ Створити рядок підключення

cmd = " Provider=microsoft.jet.OLEDB.3.51'" & _

" " Data Source=" & _

" " C: \Program Files\Microsoft Visual Studio" & _

" " \VB98\Biblio.mdb"

 

‘ Встановити з'єднання з базою даних

Set cn = New ADODB.Connection

With cn

..ConnectionString = cmd

..Open

End With

 

Створити запит

sql = " select * from authors"

 

‘ Відкрити набір записів

Set rs.= New ADODB.Recordset

With rs

..Open sql, cn, adOpenForwardOnly, adLockReadOnly

Do While Not rs.EOF

‘ Включити автора в список

lstAuthors.AddItem rs(" Author")

‘ Перейти до наступного запису

rs.MoveNext

Loop

‘ Закрити набір записів.

Close

End With

Set rs = Nothing

 

‘ Закрити підключення

cn.Close

‘ знищити об'єкт підключення

Set cn = Nothing

End Sub

10. Збережіть і запустіть проект.

Програма просто звертається до бази даних Biblio.mdb і заповнює список іменами авторів з таблиці Authors. Напевно, вам здасться, що для такого простого завдання програма вийшла занадто великою, але якщо як слід розібратися, ви зрозумієте, що в ній немає нічого складного.

На початку програми оголошуються дві змінні, cmd і sql. У змінній cmd, зберігатиметься рядок підключення ADO, використовуваний для підключення до бази даних. Змінна sql призначена для тексту SQL - запиту. Наступний фрагмент створює рядок для підключення до Biblio.mdb c допомогою нового провайдера OLEDB (вказується після конструкції Provider = на початку рядка).Якщо вам потрібно буде підключитися до джерела даних іншого типу, допустимо, до SQL Server - вкажіть іншого провайдера. Другий параметр стрічки визначає ім'я бази даних. Рядок підключення ADO виконує усю основну роботу, тому їй слід приділити основну увагу. Виділення цього коду в окрему функцію дозволяє створювати різні рядки підключення для роботи з різними базами даних (наприклад, Access, SQL Server і Oracle). Такій функції можна передавати параметр, по якому будується унікальний рядок підключення. Це спростить процес перенесення ваших застосувань з підтримкою ADO на інші джерела даних.

Наступний крок - фактичне підключення до бази даних. Для цього ми створюємо об'єкт ADO.Connection і потім встановлюємо його властивість ConnectionString рівним cmd. Після цього виконується метод. Open цього об'єкту. Метод бере дані, що знаходяться у властивості ConnectionString, і використовує їх для підключення до бази.

Після установки з'єднання з базою ми відкриваємо об'єкт ADO. Recordset для отримання записів. Проте спочатку необхідно передати йому SQL -запрос, який визначає потрібні записи. У нашій програмі це робить наступний рядок:

sql = " select * from authors"

Не вдаючись до подробиць SQL, цей запит означає наступне: " вибрати усі (*) записи з таблиці з ім'ям Authors". Саме це і було зроблено в нашому прикладі.

У нас є запит, по якому можна створити набір записів. Новий об'єкт набору записів створюється таким чином:

Set rs = New ADODB.Recordset

Тільки що створений набір не містить ніякої інформації. У блоці With ми наказуємо ADO відкрити набір командою

 

With rs

..Open sql, cn, adOpenForwardOnly, adLockReadOnly

 

Ймовірно, ви звернули увагу на параметри, необхідні для відкриття набору записів. У першому параметрі зберігається SQL -запрос для цього набору. Другий параметр, cn, говорить про те, що для підключення до бази даних набір повинен використовувати об'єкт підключення cn. Можна провести аналогію між набором записів і машиною: підключення - дорога, по якій машина добирається до даних. Наступний параметр повідомляє ADO, який тип курсору бази даних повинен використовуватися для набору. У наступній таблиці перераховані можливі варіанти курсорів з короткими описами.

 

 

Тип курсора Опис
adOpenForwardOnly Курсор цього типу може використовуватися лише для послідовного перебору записів в одному напрямі. Перебір у зворотному напрямі і довільні переходи не дозволяються. Проте цей варіант відрізняється швидкістю і згодиться у разі, якщо вам потрібно було швидко заповнити список або комбіноване поле
Ad0penKeyset Оптимальний тип курсору для великих наборів. Ви не отримуєте повідомлень про зміни в даних, які можуть вплинути на ваш набір записів
Ad0penDynamic Курсор дозволяє відстежувати усі зміни, що вносяться іншими користувачами у ваш набір записів. Він має найбільші можливості, але через це працює повільніше за усіх інших
AdOpenStatic Статичний курсор зручний для невеликих наборів

 

Нарешті, останній параметр повідомляє ADO про те, що доступ до набору записів здійснюватиметься тільки для читання. Замість нього можна вказати інший peжим блокування із наступної таблиці, проте в нашому прикладі був вибраний найшвидший варіант.

Тип блокування Опис
aLockReadOnly Цей режим блокування слід використовувати лише у тому випадку, якщо ви не збираєтеся додавати, оновлювати або видаляти записи з набору
AdLockPessimistic Запис блокується у момент початку редагування і залишається заблокованою до його завершення або переміщення курсору до наступного запису
AdLockOptimistic Оптимістичний режим: блокування включається при виклику методу. Update для запису. В процесі редагування запис залишається незаблокованим і лише тимчасово блокується на час збереження змін в базі
AdLockBatchOptimistic Режим дозволяє виконувати оптимістичне блокування при оновленні декількох записів

 

Якщо усі параметри були вказані вірно, набір записів відкривається і ви можете працювати з його даними.

У наступному фрагменті програма в циклі перебирає усі записи до тих пір, поки не буде знайдена ознака кінця файлу (EOF). При переміщенні курсору до чергового запису ми заносимо дані з поля Author в список:

lstAuthors.AddItem rs(" Author")

Після занесення чергового імені в список ми переходимо до наступного запису за допомогою методу. MoveNext. Якщо забути про це, цикл працюватиме вічно, тому що ознака кінця файлу ніколи не буде досягнута. Нарешті, після закінчення роботи усе відкрите треба закрити, а усе створене - знищити. Для цього слід викликати метод.Close для об'єктів Recordset і Connection. Далі цим об'єктам привласнюється Nothing для запобігання витокам пам'яті у вашому застосуванні.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.