Atunci când instalați AggreGate într-o infrastructură IT complexă a unei întreprinderi, este necesar să gestionați și să utilizați datele stocate într-o bază de date externă. Această lecție arată cum să vă conectați la o bază de date externă SQL și să creați o interfață de utilizator pentru căutarea, filtrarea, crearea, editarea și ștergerea înregistrărilor.
1. Conectarea la o bază de date externă
Conexiunea la o bază de date MySQL externă va fi prin intermediul driverului dispozitivului de bază de date AggreGate SQL, care se poate conecta la orice alt tip de bază de date prin JDBC.
Iată cum arată structura bazei de date (snapshot-ul utilitarului de gestionare a bazelor de date terță parte):
Iată datele (un instantaneu al utilitarului de gestionare a bazelor de date terță parte):
Mai întâi, vom crea un cont de dispozitiv în baza de date SQL și vom determina setările de acces necesare (adresa URL a bazei de date, numele de utilizator și parola). Ca rezultat, avem un dispozitiv verde cu un buton de steag verde deasupra acestuia (ceea ce înseamnă că dispozitivul este online și sincronizat). Consultați documentația driverului bazei de date SQL pentru mai multe informații.
Odată ce dispozitivul de bază de date este conectat, funcția dispozitivului Run Query devine disponibilă. Această funcție vă permite să executați o interogare arbitrară pentru a selecta / actualiza parametrii personalizați, ceea ce este esențial pentru cazul nostru.
2. Designul de căutare a datelor și gestionarea interfeței cu utilizatorul
Acesta este modul în care arată forma de gestionare a cărților:
Elementele principale ale interfeței cu utilizatorul includ:
• Panoul de căutare de sus cu două câmpuri de text (numele cardului și numele titularului cardului) și butonul Căutați
Această interfață cu utilizatorul poate fi foarte diferită în alte sarcini de gestionare a bazelor de date externe.
3. Legarea interfeței la baza de date
În acest stadiu, trebuie să vă asigurați că formularul nostru personalizat poate încărca și stoca date din / în tabela noastră de baze de date cu hărți.
Widgetul nostru are doar două legături.
răsfoiți butonul
Prima obligație funcționează când faceți clic pe butonul Căutare (după cum indică formularul / searchButton: faceți clic pe @):
Informațiile obligatorii sarcini card prin apelarea funcția dispozitivului executeQuery SQL baze de date (indicat de users.admin.devices.cardsDatabase context) și le pune într-o carduri de masa (ca un formular de comandă / carduri specificate: DataTable).
Textul interogării este selectat * de pe carduri unde id-ul este similar. și nume ca. Al doilea parametru al funcției false a executării interogării indică faptul că efectuăm o interogare selectată (nu o actualizare). Al treilea parametru este un tabel în două coloane, format "în zbor" folosind funcția table (). Numele câmpului său (cardId și cardholderName este ignorat, deoarece valoarea primei coloane este utilizată pentru a înlocui primul parametru în textul interogării etc.).
Construcția "%" + + "%" adaugă caracterul% la începutul și la sfârșitul șirului de căutare. pentru a activa o potrivire nestricătoare pentru operatorul SQL.
adjustRecordLimits (tabelul .0, 1000000000) extinde numărul minim și maxim de înregistrări pentru tabela returnată de interogare pentru a permite operatorilor să șterge intrările din tabela de hartă și să adauge noi intrări în ea.
Și, în cele din urmă, adăugațiColoane (tabelul.)„“ „), Se adaugă la coloana originalId invizibil de masă și a stabilit valoarea egală cu valorile din coloana id. Ascuns coloană la un înregistrări de actualizare de baze de date, chiar dacă ID-urile de carduri au fost editate.
Iată cum arată formularul cu datele încărcate și filtrate:
scrie butonul de legare
4. Configurarea procesării înregistrărilor Adăugate / Modificate / Șterse
• Exprimarea procesării înregistrărilor adăugate
• Exprimarea procesării înregistrărilor modificate
• Exprimarea prelucrării înregistrărilor șterse
Procesarea înregistrărilor adăugate
Iată o expresie pentru procesarea înregistrărilor adiționale ale widgetului nostru:
celule (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "se introduce în cărți de identitate (nume, valori, active) (.)", adevărat, dt ()), "rânduri")> 0
Această expresie numește aceeași funcție executeQuery. Cu toate acestea, textul cererii este diferit: inserați în carduri (ID, Nume, Active) valori (.)
Al doilea parametru pentru adevărat al funcției executeQuery este că încercăm să actualizăm interogarea.
Al treilea parametru este data înregistrării adăugate, "înfășurată" într-un tabel cu un singur rând și specificată de funcția dt () (deoarece aceasta este tabela implicită în timpul calculului Expresiei pentru procesarea înregistrărilor adăugate).
Astfel, valoarea din prima coloană, adică Identificatorul cardului va fi utilizat pentru a înlocui primul parametru. și așa mai departe.
Celula (executeQueryResult, "rows")> 0 asigură că cel puțin o intrare a fost introdusă de interogare. În prezent, înregistrarea înregistrată este ștearsă din lista de intrări adăugate în acest caz.
procesarea înregistrărilor șterse
Iată o expresie pentru procesarea înregistrărilor șterse:
celula (callFunction ("users.admin.devices.cardsDatabase", "executeQuery", "șterge din carduri unde ID =?", true, dt ()) "
Expresia este foarte asemănătoare cu expresia de procesare a intrărilor adăugate. În acest caz, se utilizează numai parametrul identificatorului cardului.
procesarea hărților actualizate
Procesarea intrărilor modificate este oarecum mai complicată:
celule (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "set carduri de actualizare id =. name =. = activ. unde id =?", adevărat, dt ()), "rânduri")> 0 .set (dt (), "originalId", 0,). fals
Prima sa parte trimite interogarea actualizată la baza de date utilizând valoarea celui de-al patrulea câmp al originalId ca cheie pentru comparație. Acest lucru este necesar, deoarece primul câmp vizibil al identificatorului de hartă poate fi editat de operatori și totuși va trebui să se potrivească exact cu înregistrările.
Setul (dt (), "originalId", 0) este calculat numai dacă se actualizează cel puțin o înregistrare. În acest caz, luăm valoarea potențială a câmpului id și îl stocăm din nou în câmpul originalId. astfel încât să puteți continua să schimbați înregistrarea.