Külső adatbázis-táblázat kezelése sql
Ha az AggreGate-t egy vállalkozás komplex informatikai infrastruktúrájába telepíti, akkor külső adatbázisban tárolt adatokat kell kezelni és használni. Ez a lecke bemutatja, hogyan csatlakozhat egy külső SQL adatbázishoz, és hozzon létre felhasználói felületet a rekordok kereséséhez, szűréséhez, létrehozásához, szerkesztéséhez és törléséhez.
1. Csatlakozás külső adatbázishoz
A külső MySQL adatbázishoz való kapcsolódás az AggreGate SQL adatbázis-illesztőprogramon keresztül történik, amely a JDBC-n keresztül más típusú adatbázisokhoz is csatlakozhat.
Így néz ki az adatbázis struktúrája (a harmadik fél adatbáziskezelő segédprogramjának pillanatképe):
Itt vannak az adatok (a harmadik fél adatbáziskezelő segédprogram pillanatképe):
Először létrehozunk egy eszköz fiókot az SQL adatbázisban, és meghatározzuk a szükséges hozzáférési beállításokat (adatbázis URL, felhasználónév és jelszó). Ennek eredményeképpen egy zöld eszköz van, amelynek tetején zöld zászló található (ami azt jelenti, hogy az eszköz online és szinkronizált). További információért lásd az SQL adatbázis illesztőprogram dokumentációját.
Az adatbázis-eszköz csatlakoztatása után elérhetővé válik a Run Query eszköz funkciója. Ez a funkció lehetővé teszi, hogy tetszőleges lekérdezést hajtson végre az egyedi paraméterek kiválasztásával / frissítésével, ami az esetünk szempontjából kritikus.
2. Adatkeresési tervezés és felhasználói felület kezelése
Így néz ki a kártya kezelésének formája:
A felhasználói felület fő elemei a következők:
• A felső keresőpanel két szövegmezővel (kártya azonosítója és a kártyatulajdonos neve) és a Keresés gomb
Ez a felhasználói felület nagyon eltérő lehet a külső adatbázisok kezelésében.
3. Az interfész az adatbázisba történő kötése
Ebben a szakaszban meg kell győződnie arról, hogy egyéni űrlapunk betölthet és tárolhat adatokat a térkép adatbázis táblázatából.
A widgetnek csak két kötése van.
böngészési gomb
Az első kötés a Keresés gombra kattintva működik (az űrlap / keresés gombja szerint: kattintson a @ gombra):
Binding terhelések kártyaadatokat funkció meghívásával a készülék executeQuery SQL adatbázisokat (jelzett összefüggésben users.admin.devices.cardsDatabase), és lehetővé teszi számukra, asztali kártyák (a megadott sorrendben form / kártyák: DataTable).
A lekérdezés szövege a * kártyák közül választható ki, ahol id jellegű. és nevét. A lekérdezés végrehajtásának hamis funkciójának második paramétere azt jelzi, hogy egy kiválasztott lekérdezést (nem frissítést) hajtunk végre. A harmadik paraméter egy asztal két oszlopban, amelyet a "tableau" függvény segítségével alakítanak ki. A mező nevét (a kártya és a kártyatulajdonos neve figyelmen kívül hagyja, mivel az első oszlop értéke az első paraméter helyett a lekérdező szöveg stb.).
A "%" + + "%" konstrukció hozzáadja a% karaktert a keresési string kezdetéhez és végéhez. hogy az SQL-operátor számára nem szigorú egyezést aktiváljon.
adjustRecordLimits (asztal. 0, 1000000000) kiterjeszti a minimális és maximális bejegyzések száma a tábla által visszaadott lekérdezés, hogy az érintettek törlésére a kártyaasztal és új bejegyzéseket hozzá.
És végül, addColumns (táblázat.„” „) Növeli a táblázatban látható originalId oszlop és az értéke megegyezik az értékek az id oszlopban. Rejtett oszlop egy frissítést adatbázisrekordok akkor is, ha a kártya azonosítók lettek hagyva.
Íme, hogy az űrlap hogyan néz ki a feltöltött és szűrt adatokkal:
írjon gombot
4. A rekordok feldolgozásának beállítása Hozzáadott / módosított / törölve
• A hozzáadott rekordok feldolgozásának kifejeződése
• A feldolgozás kifejeződése megváltozott
• A törölt rekordok feldolgozásának kifejezése
Hozzáadott rekordok feldolgozása
Itt van egy kifejezés a widgetünk további bejegyzéseinek feldolgozására:
cella (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "helyezze kártyák (ID, név, aktív) értékek (.)", true, dt ()) "sorban")> 0
Ez a kifejezés ugyanazt a executeQuery függvényt hívja. A kérés szövege azonban más: beillesztés a kártyákba (azonosító, név, aktív) értékek (.)
A executeQuery függvény második paramétere igaz, hogy megpróbáljuk frissíteni a lekérdezést.
A harmadik paraméter a hozzáadott rekord adata, "be van csomagolva" egy soros táblázatban, amelyet a dt () függvény határoz meg (mivel ez az alapértelmezett tábla a Kifejezés számítása során a hozzáadott rekordok feldolgozásához).
Így az első oszlopból származó érték, azaz az első oszlop értéke. A kártya azonosítója az első paraméter helyettesítésére szolgál. és így tovább.
A cella (executeQueryResult, "sorok")> 0 biztosítja, hogy a lekérdezés legalább egy bejegyzést tartalmazott. A jelenleg feldolgozandó rekord ebben az esetben törlődik a hozzáadott bejegyzések listájáról.
a törölt rekordok feldolgozása
Itt van egy kifejezés a törölt rekordok feldolgozásához:
cella (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "törölni kártyák ahol az ID =?", igaz, dt ()) "sorban")> 0
A kifejezés nagyon hasonlít a hozzáadott bejegyzések feldolgozásához. Ebben az esetben csak a kártyaazonosító paramétert használjuk.
frissített térképek feldolgozása
A módosított bejegyzések feldolgozása némileg bonyolultabb:
sejt (callFunction ( "users.admin.devices.cardsDatabase", "executeQuery", "frissítés kártyák meghatározott id =. name =. aktív =. ahol id =?", igaz, dt ()), "sorok")> 0 .set (dt (), "originalId", 0,). hamis
Az első rész a frissített lekérdezést küldi az adatbázisba az eredetiId negyedik mezőjének értékével, az összehasonlítás kulcsaként. Erre azért van szükség, mert a térképazonosító első látható mezőjét az operátorok szerkeszthetik, és pontosan meg kell felelniük a rekordoknak.
A set (dt (), "originalId", 0,) rész csak akkor számítható ki, ha legalább egy rekord frissül. Ebben az esetben az id mező potenciális értékét vesszük és tároljuk az eredetiId mezőben. így tovább módosíthatja a rekordot.