Контроль над СКБД mySQL в візуальному середовищі програмування Delphi.
Контроль над СКБД mySQL в візуальному середовищі програмування Delphi.
І так прийшов час навчитися контролювати і використовувати СКБД для прикладних цілей, а саме для зберігання та маніпуляції над даними.
Для цих цілей будемо використовувати компоненти DataSource, DBGrid, Query та Database.
Database – використовується для під’єднання до БД за вказаним аліасом.
Query – використовується безпосередньо для виконання запитів на конкретній БД.
DataSource – використовується як джерело даних для відображення.
DBGrid – безпосередньо відображає данні користувачу (в зрузному вигляді таблиці).
Використання компонента Database
Після того як ви помістили компонент Database на форму, по ньому можна клікнути два рази для відображення параметрів з’єднання. У вікні параметрів обов’язково потрібно вказати ім’я БД «Name» та ім’я аліасу «Alias Name». Якщо помітка «Login promt» увімкнена тоді нічого більше вказувати не потрібно (мітка означає, що перед з’єднянням з БД буде виведено вікно де ми маємо ввести реквізити доступу до БД, якщо реквізити правильні програма продовжить роботу, якщо ж ні – завершить).
Для того щоб замінити чи не відображати стандартне вікно входу до БД, або ж другими словами забезпечити автоматичний вхід до системи. Необхідно на компоненті TDatabase, яка і виводить вікно підключення клікнути лівою клавішею миші два рази. Отримаємо вікно параметрів під’єднання до БД. Вводимо в полі Name назву БД, в полі Alias Name вводимо назву аліасу ODBC та натискаємо на кнопку Deaults знімаємо відмітку Login Prompt, та у вікні Parameter Overrides
DATABASE NAME= [ім’я бази]
USER NAME= [ім’я користувача]
ODBC DSN= [ім’я алісу ODBC]
PASSWORD= [пароль користувача]
Після чого якщо властивість Connect перевести в True система автоматично підключиться без ніяких запитів.
Якшо робити це в програмі код буде мати вигляд:
DataBase1.AliasName:='[ім’я алісу ODBC]';
DataBase1.DatabaseName:=' ім’я бази ';
DataBase1.LoginPrompt:=False;
DataBase1.Params.Add('DATABASE NAME= [ім’я бази]');
DataBase1.Params.Add('USER NAME= [ім’я користувача]');
DataBase1.Params.Add('ODBC DSN= [ім’я алісу ODBC]');
DataBase1.Params.Add('PASSWORD= [пароль користувача]');
DataBase1.Connect:=True;
Компонент DataSource
Компонента є проміжною для забезпечення зв’язку запиту та відображення даних у таблиці. Єдине що потрібно змінити це параметр «DataSet» тут потрібно вказати який саме Query буде відображатися в таблиці. Якщо ж запит по закінченню ніяких даних не повернув – таблиця відобразиться порожньою.
У коді задати чи змінити параметр можна таким чином:
DataSource.DataSet:=Query1
Компонента Query
У подальшій роботі ми будемо використовувати деякі методи цієї компоненти.
Метод Query.SQL – містить запит який буде відіслано на виконання.
Query.SQL.Clear – очищує текст запиту.
Query.SQL.Add(String) – додає до запиту наступний (або ж якщо метод пустий тоді перший) рядок запиту.
Query.SQL[NN] – повертає рядок запиту NN.
Query.SQL.SaveToFile (String) – записує у файл з заданим ім’ям текстовий запит.
Query.SQL.LoadFromFile(String) – зчитує з вказано файлу текст запиту.
Query.Active – активує запит на відображення, тобто передає запит, чекає результатів виконання та передає данні для відображення в DataSource. Може буди або True або False. Зверніть увагу, якщо мета запиту не відображати дані (додавати, редагувати і т.д.) тоді метод поверне помилку.
Query.ExecSQL – використовується для виконання запиту кінцевою метою якого не є відображення даних.
Запит може складатися з декількох рядків, але має бути одиничним, тобто якщо ви забажаєте у першому рядку додати запис, потім через крапку з комою відредагуєте інший – отримаєте помилку. Так як у Delphi один запит – одна дія.
Query.DataBase – обов’язково мусить містити ім’я БД.
Query.FieldByName(‘<FIELD_NAME>’) [.asString, asInteger, asBoolean…] – повертає значення вказаного поля активного запису.
Query.MoveBy(<DISTANCE>) – переходить на запис вказаний відстанню, якщо число додатнє опускається вниз, від’ємне підіймається вверх.
Query.Next – переходить на наступний заис.
Query.First – переміщується на перший запис.
Query.Last – переміщується на кінцевий запис.
Query.EOF – повертає істину якщо активний останній запис.
Query.BOF – повертає істину якщо активний перший запис.
На цьому методи компоненти не закінчуються, але всі найчастіше уживані перераховано.
Компонента DBGrid
DBgrid.Columns.Count – кількість стовпців присутніх в відображенні.
DBgrid.Columns.Item[NN].Width – довжина NN -1 ствпця.
DBgrid.Columns.Item[NN].FieldName – ім’я NN-1 поля.
DBgrid.DataSource – обов’язково мусить містити посилання на відображаємі данні.
Загальна структура роботи
Отже з потрібними компонентами ми розібрались, залишилося зліпити це все до купи. Для правильної роботи програмного засобу потрібно дотримуватись декількох пунктів:
- За відображення даних відповідає Query-DataSource-DBgrid якщо ви бажаєте змінити, або видалити запис потрібно додаткуву Query яка безпосередньо через ExecSQL виконає запит, інакше без проміжних змінних нічого у вас не вийде.
- Коли переносите програмний додаток, активуйте діалог вводу реквізитів доступу (паролі у вас вдома і там де ви запускаєте не завжди співпадають).
- При зміні або доданні записів тільки числові типи полів не беруться в лапки. Якщо ж у вас наприклад поле де записується номер телефону ’020202’ він береться в лапки так як його можна записати як ’+38 (0362) 02-02-02’ тобто коли ви передаєте числа в текстовий тип лапки обов’язкові.
- FieldByName – повертає значення по назві поля отриманого з СКБД тобто якщо при запиті:
SELECT user.phone FROM user;
FieldByName(‘phone’).asString = “02-02-02”
SELECT user.phone AS ‘telefon’ FROM user;
FieldByName(‘phone’).asString – поверне помилку.
FieldByName(‘telefon’).asString = “02-02-02”