При інсталяції AggreGate в середовищі складної ІТ-інфраструктури підприємства необхідно управляти і використовувати дані, що зберігаються в зовнішній базі даних. Цей урок показує, як підключитися до зовн базі даних SQL і створити призначений для користувача інтерфейс для пошуку, фільтрації, створення, редагування і видалення записів.
1. Підключення до зовнішньої базі даних
Підключення до зовнішньої базі даних MySQL буде здійснюватися через драйвер пристрою бази даних SQL AggreGate, який також може підключатися до будь-якого іншого типу бази даних через JDBC.
Ось як виглядає структура бази даних (знімок утиліти управління сторонньої базою даних):
Ось дані (знімок утиліти управління сторонньої базою даних):
По-перше, ми створюємо обліковий запис пристрою в базі даних SQL і визначаємо необхідні настройки доступу (URL бази даних, ім'я користувача і пароль). В результаті маємо зелене пристрій із зеленою кнопкою-прапорцем поверх нього (що означає, що пристрій онлайн і синхронізовано). Див. Документацію драйвера База даних SQL для отримання більш докладної інформації.
Як тільки він підключений бази даних, стає доступна функція пристрою Виконати запит. Ця функція дозволяє виконати довільний запит вибрати / оновити до призначених для користувача параметрами, що критично необхідно для нашого випадку.
2. Дизайн пошуку даних і управління призначеним для користувача інтерфейсом
Ось як виглядає форма управління картами:
Основні елементи призначеного для користувача інтерфейсу включають:
• Панель Топ Пошук з двома текстовими полями (ідентифікатор карти і ім'я власника картки) і кнопка Пошук
Цей інтерфейс може сильно відрізнятися в інших завданнях управління зовнішніми базами даних.
3. Прив'язка інтерфейсу до бази даних
На цьому етапі потрібно зробити так, щоб наша призначена для користувача форма могла завантажувати і зберігати дані з / в нашу таблицю бази даних Карт.
У нашого віджета є тільки дві прив'язки.
кнопка пошуку прив'язок
Перша прив'язка працює при натисканні на кнопці Пошук (як зазначено активатором form / searchButton: click @):
Прив'язка завантажує дані карти шляхом виклику функції executeQuery з пристрою Бази даних SQL (зазначеного шляхом контексту users.admin.devices.cardsDatabase) і поміщає їх в таблицю cards (як зазначено метою form / cards: dataTable).
Текст запиту - select * from cards where id like. and name like. Другий параметр false функції виконання запиту говорить про те, що ми виконуємо запит вибору (не оновленої). Третій параметр - це таблиця у дві колонки, сформована "на льоту" за допомогою функції table (). Ім'я її поля (cardId і cardholderName ігноруються, оскільки значення першої колонки використовується для заміщення першого параметра. В тексті запиту і т.д.).
Конструкція "%" + + "%" додає до початку і кінця рядку пошуку символ%. щоб активувати Нечитка відповідність для SQL-оператора like.
adjustRecordLimits (table. 0, 1000000000) розширює мінімальну та максимальну кількість записів для таблиці, повернутої запитом, щоб дозволити операторам видаляти записи з таблиці карт і додавати до неї нові записи.
І, нарешті, addColumns (table. ""," ") Додає до таблиці невидиму колонку originalId і задає її значення, рівні значенням в колонці id. Прихована колонка дозволить оновлювати записи бази даних, навіть якщо були відредаговані ідентифікатори карт.
Ось як виглядає форма з завантаженими і відфільтрованими даними:
прив'язка кнопки запису
4. Конфігурування обробки записів Додано / Змінено / Вилучено
• Вираз обробки доданих записів
• Вираз обробки змінених записів
• Вираз обробки віддалених записів
Обробка доданих записів
Ось Вираз обробки доданих записів нашого віджету:
cell (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "insert into cards (ID, Name, Active) values (.)", true, dt ()), "rows")> 0
Цей вислів викликає ту ж функцію executeQuery. Однак текст запиту інший: insert into cards (ID, Name, Active) values (.)
Другий параметр true функції executeQuery говорить про те, що ми намагаємося оновити запит.
Третій параметр - це дані доданої записи, "загорнуті" в таблицю з одним рядком і зазначені функцією dt () (оскільки це таблиця за замовчуванням під час розрахунку Вирази обробки доданих записів).
Таким чином, значення з першої колонки, тобто ідентифікатор карти, буде використовуватися для заміни першого параметра. і т.д.
Конструкція cell (executeQueryResult, "rows")> 0 гарантує, що хоча б один запис була вставлена запитом. Обробляється в даний момент запис видаляється зі списку доданих записів в цьому випадку.
обробка віддалених записів
Ось Вираз обробки віддалених записів:
cell (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "delete from cards where ID =?", true, dt ()), "rows")> 0
Вираз дуже схоже на вираз обробки доданих записів. У цьому випадку встановлюється параметр ідентифікатора карти.
обробка оновлених карт
Вираз обробки змінених записів дещо складніше:
cell (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "update cards set id =. name =. active =. where id =?", true, dt ()), "rows")> 0 . set (dt (), "originalId", 0,). false
Його перша частина відправляє оновлений запит до бази даних, використовуючи значення четвертого поля originalId як ключ для порівняння. Це необхідно, тому що перше видиме поле ідентифікатора карти може редагуватися операторами і все ж має буде точно відповідати записам.
Частина set (dt (), "originalId", 0,) розраховується, тільки якщо хоча б один запис оновлюється. В цьому випадку ми беремо потенційно оновлення значення поля id і знову зберігаємо його в поле originalId. щоб можна було далі міняти записи.