Mysql lazarus munka és a lazarus web szerverén megadott adatbázis
TMySQL50Connection, TSQLTransaction, TSQLQuery - komponensek az adatbázis kezeléséhez
Hozzon létre egy üres projektet. A projekt mappában meg kell másolni a DLL-t a MySQL-vel való együttműködésre. Letöltheti itt: libmysql.dll.
Az én webkiszolgáló fut MySQL 5.03, ezért legjobb gyakorlatot követve leírt a cikkben: „A SQLdb a Lazarus: a alapjait dolgozik adatbázisokkal,” tettem formájában alkatrészek TMySQL50Connection, TSQLTransaction, TSQLQuery SQLbd a panel; és egy TDatasource elemet az Adatbeviteli panelből.
Ezeket az alkatrészeket összekötjük.- A MySQL50Connection1 objektum Tranzakció tulajdonságában válassza az SQLTransaction1 (Nem módosítottam az alapértelmezett objektumneveket).
- Az SQLQuery1 objektum Adatbázis tulajdonságában válassza ki a MySQL50Connection1 elemet
- Az SQLQuery1 objektum Tranzakció tulajdonságában válassza ki az SQLTransaction1 elemet
- A Datasource1 objektum DataSet tulajdonságában válassza ki az SQLQuery1 elemet
A TSQLQuery osztály objektumai adatkészletek. A tábla egy példányát betölti az adatbázis-kiszolgálóról, és ezzel elvégzi az összes munkát.
A TSQLQuery két, alapvetően különböző módon fér hozzá az adatokhoz: a navigáció, amely a táblázat minden egyes (jelenlegi) rekordját (sorát) feldolgozza; és relációs, egyszerre egy rekordcsoport feldolgozásán alapul, SQL-lekérdezéseken keresztül.
Az adatokhoz való hozzáférés relációs módszere
Először megismerjük az adatokhoz való hozzáférés relációs módját, különösen az SQL lekérdezések végrehajtásának módjait. Az SQL lekérdezések két csoportra oszthatók: azok, amelyek visszatérnek és nem adják vissza az eredményt. Például a lekérdezés magában foglalja a myArtTable táblázat egy példányának az adatkészletbe történő írását. Ennek végrehajtásához a következő kódot kell használni:
Először bezárjuk az SQLQuery1 adatkészletet, és felhívjuk a Close módszert (ugyanazt az eredményt érhetjük el, ha az Aktív tulajdonság hamis). Ha a készlet zárt, akkor az adatbázishoz való kapcsolódása megszűnik. Ezután töröljük az SQL tulajdonságot a Clear módszerrel. Az Új módszer használatával írja be az új lekérdezés szövegét. A lekérdezés akkor fut le, amikor az Open parancs végrehajtásra kerül, ami az SQLQuery1 adatkészletet nyílt üzemmódba fordítja, és az SQL lekérdezés eredményeit írja rá.
Ha az SQL lekérdezés nem jelenti az adatlapok visszaadását (INSERT és UPDATE lekérdezések), akkor alternatív módot kell használnia annak végrehajtására:
Ugyanakkor hiba történik, amikor megpróbálja lefordítani az adatkészletet nyitott módban (SQLQuery1.Open;). Ennek megoldásához új lekérdezést kell felírnia az SQL tulajdonságra, amely visszaadja az alábbi táblázatot:
Vagy hozzon létre és használja ezeket az SQL lekérdezéseket egy különálló adatkészletet (SQLQuery2), amely soha nem nyílt módra vált.
Kapcsolódás és leválasztás az adatbázisból a Lazarusban
Mi fog kapcsolódni egy távoli adatbázis azonnal, de miután megkapta egyértelmű utasítást a felhasználótól (kattintson a megfelelő gombra), úgyhogy a tulajdonság az Object Inspector Sonnected TMySQL50Connection komponenst és tulajdonságai aktív összetevő és TSQLTransaction TSQLQuery hamis.
Hozzon létre egy "Connect" gombot az űrlapon. A kattintáskezelőben a következőket írjuk:
Így először kísérletet tesznek a MySQL adatbázisba való kapcsolódásra, ha sikeres lenne, létrejön egy új tranzakció, majd az SQLQuery1 objektum aktiválásakor egy SQL lekérdezést hajt végre az adatbázisban, amely kiválasztja az összes sort a táblából. Mielőtt megkapná az asztalt a kiszolgálóról, be kell állítania a kódolást ennek megfelelően. Adatbázisomban az adatok a cp1251-ben kerülnek tárolásra, így futtatom a lekérdezést
Az adatbázishoz való csatlakozáskor fordított sorrendben járjon el. Állítsa be a leválasztási kódot az űrlap OnDestroy eseménykezelőjében
Az adatokhoz való hozzáférés navigációs módja
A navigációs módszer szekvenciális munkát végez az adatkészletben található táblázat rekordjaival (sorokkal). A navigációs hozzáférési módszer a vizuális összetevők munkáján alapul, az "Adatkezelés" fülön. A TDBGrid, a TDBNavigator és a TDBMemo három összetevőjére tesszük a formára. És a DataSource tulajdonságaiban egy DataSource1 hivatkozást telepítsen. A DBMemo1, DBMemo2, DBMemo3 objektumok DataField tulajdonságaiban leírást, szöveget és kulcsszavakat írunk le. (Emlékeztetem Önöket, hogy a leírás, a szöveg és a kulcsszavak - a neve mezők (oszlopok) a táblázat myArtTable.) Mivel a kezdeti adathalmazt zárt (Action = false), Lázár figyelmeztető üzenetet ad, ha megpróbál belépni a mezőnevek. Ne figyeljen - ez normális.
Futtassa a programot, és kattintson a "Connect ..." gombra. Miután csatlakozott az adatbázishoz, a szerverről érkező táblázat megjelenik a DBGrid1 objektumban. A bal oldali nyíl jelzi az aktuális rekordot. A DBNavigator1 panel gombjaival navigálhat a táblázat sorai között. A rekordokat is szerkesztheti, de miután a program lezárult, az összes elvégzett módosítás visszaáll. Az adatbázisba való mentéshez az ApplyUpdates metódust kell hívnia:
Íme a TSQLQuery osztálymódszerek az adatbázis navigálásához:- TSQLQuery.Next - menj az íráshoz
- TSQLQuery.Prior - menj vissza írni
- TSQLQuery.First - menj az első rekordhoz
- TSQLQuery.Last - ugrás az utolsó bejegyzésre
- TSQLQuery.Insert - új rekord felvétele
- TSQLQuery.Delete - rekord törlése
- TSQLQuery.Edit - konvertálja az adatkészletet szerkesztési módba
- TSQLQuery.Post - mentse az adatkészletben végrehajtott változtatásokat
- TSQLQuery.Refresh - frissítse a táblázatot
Annak érdekében, hogy a mező értéke a felvételt, akkor használja a módszert FieldByName (fn: string), ahol fn - a mező nevét (oszlop) az asztalra. Ugyanez a módszer használható új adatoknak a táblázathoz történő írására. olvasási / írási formátumot jelzi AsString tulajdonságok AsInteger, AsFloat, AsDataTime, ... Például, hogy rögzítse az aktuális értéket az id mező a címke, akkor a kód:
Íme egy példa a táblázat aktuális sorának szerkesztéséről
Érdemes megjegyezni, hogy nem minden adatkészlet szerkeszthető navigációs módon. Ahhoz, hogy az SQL lekérdezés eredményeképpen létrejöjjön a szerkesztett készlet (azaz hogy az elvégzett módosítások menthetők az adatbázisba), akkor az alábbi feltételeknek kell megfelelnie:- az adatok csak egy táblázatban vannak kiválasztva;
- a táblázat módosítható;
- a lekérdezés nem használja a DISTINCT és a statikus funkciókat;
- A lekérdezés nem használja a táblázatokat;
- a lekérdezésben nincs alcím és beágyazott lekérdezés;
- Ne használjon adatcsoportosítást;
- a rendezés csak az index mezőkre vonatkozik;
Tranzakciók és TSQLTransaction használata a Lazarusban
Általánosságban elmondható, hogy a tranzakciós mechanizmusnak meg kell őriznie az adatbázis integritását. Tegyük fel, hogy a tényleges adatok előállításához az adatbázisban nagy mennyiségű információt kell beírnia a különböző táblázatokba. Ha a felvétel közben a villamos áram kikapcsol, a táblák közül néhány az aktuális információt tartalmazza, és néhányat a régi. Ennek eredményeként az adatbázis sérül. A tranzakciós mechanizmus segít elkerülni ezt. Ha minden írási művelet sikeres, akkor a tranzakció sikeresnek tekinthető, és az adatbázis táblák minden módosítását megerősítettnek tekintik. Ha legalább egy írási műveletet nem hajt végre, akkor a tranzakció sikertelen, és az adatbázis-táblák visszaállnak a tranzakció megkezdését megelőző állapotba.
A Lazarus tranzakcióinak kezeléséhez a TSQLTransaction komponens hozzá lett adva. Jelenleg azonban nem működik a MySQL adatbázisokkal. A TSQLTransaction automatikusan megy az aktív állapotba, amikor az adatkészlet megnyílik (TSQLQuery), és bezáródik, amikor bezárul. A tranzakció sikerességének egyértelmű megerősítése érdekében használhatja a TSQLTransaction.Commit metódust. Meg kell hívni közvetlenül a TSQLQuerty.ApplyUpdates után; A tranzakció visszaszorításához használhatja a TSQLTransaction.Rollback módszert.
következtetés
Tehát ebben a cikkben megpróbáltam összeállítani a kis tapasztalataimat a Lazarus MySQL adatbázisával való együttműködésre. A többi adatbázis együttes működésének mechanizmusa nem különbözik az itt leírtaktól.
SQL lekérdezés létrehozni egy asztalt myArtTable