Tvorba grafického rozhraní sqlite databáze v Free Pascal / IDE Lazarus
Příprava Sqlite databáze
1 | Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubor db08.zip a extrahujte jej tak, aby rozbalené soubory byly ve složce c:\temp\db08 | FileZilla |
2 | Spusťte příkazový řádek a přejděte v něm do složky \temp\db08 | cmd, cd |
3 | Spusťte c:\programy\sqlite\sqlite3 db08.sqlite | sqlite |
4 | Ověřte funkčnost databáze - vypište si seznam tabulek, schéma tabulky citaty | .schema |
IDE Lazarus - aplikace Citáty
5 | Vytvořte si novou složku c:\temp\citaty pro budoucí aplikaci |
6 | Zkopírujte do této složky soubor sqlite3.dll, který najdete v c:\programy\sqlite |
7 | Spusťte Lazarus a otevřte novou prázdnou aplikaci (Soubor - Nový) |
8 | Uložte aplikaci (Soubor - Uložit vše) jako c:\temp\citaty\citaty.lpi včetně unit1.pas |
9 | Zkuste aplikaci Citáty zkompilovat + spustit (F9), poté Citáty zavřít (nezavírat Lazarus), ověřte vytvoření exe souboru |
Prohlížení tabulky - obr.
10 | Vložte do formuláře Form1 ze záložky SQLdb komponentu TSQLite3Connection
a nastavte přes Inspektor objektů vlastnost: SQLite3Connection1.DatabaseName = c:\temp\db08\db08.sqlite (včetně cesty) |
11 | Vložte TSQLTransaction a nastavte vlastnost: SQLTransaction1.Database = SQLite3Connection1 |
12 | Vložte TSQLQuery a nastavte SQLQuery1.Database = SQLite3Connection1 |
13 | Do vlastnosti SQL je nutno vložit základní příkaz pro výpis tabulky: SQLQuery1.SQL = select * from citaty; |
14 | Vytvořte událost Form1.OnCreate a do vygenerované procedury
FormCreate vložte příkazy pro otevření databáze a přechod na
první řádek: SQLQuery1.Open; SQLQuery1.First; |
15 | Podobně do Form1.OnClose vložte příkaz pro zavření databáze:
SQLQuery1.Close; |
16 | Uložte vše, zkompilujte a spusťte aplikaci pro ověření bezchybovosti |
17 | Vložte do Form1 komponentu TDataSource (záložka Data Access) pro napojení vizuálních
komponent a nastavte vlastnost: Datasource1.Dataset = SQLQuery1 |
18 | Vložte do Form1 komponenty TDbGrid a TDbNavigator (záložka Data
Controls) a napojte je ve vlastnostech na zdroj dat Datasource1: DataSource = Datasource1 |
19 | Spusťte aplikaci, upravte si šířku sloupců a prověřte funkčnost procházení databáze pomocí navigátoru, aplikaci zavřete |
20 | Upravte SQLQuery1.SQL pro řazení podle autorů: SQLQuery1.SQL = select * from citaty order by autor; ověřte změnu po spuštění aplikace |
21 | Pravým tlačítkem v DbGrid1 proveďte Editovat sloupce a přidejte 4 sloupce |
22 | U každého sloupce nadefinujte jména sloupců pomocí vlastnosti FieldName: 0. sloupec FieldName = autor 1. sloupec FieldName = tema 2. sloupec FieldName = hodnoceni 3. sloupec FieldName = datum |
23 | Podobně nastavte záhlaví sloupců přes vlastnost Title - Caption (Title nutno rozkliknout) = Autor, Téma, Hodnocení, Datum |
24 | Podobně nastavte citem šířku sloupců vlastností Width |
25 | Spusťte aplikaci a dolaďte zpětně šířku sloupců |
26 | Vložte do Form1 komponentu TDbMemo (záložka Data
Controls) pro citát a nastavte vlastnosti: DbMemo1.DataField = citat DbMemo1.DataSource = Datasource1 DbMemo1.ScrollBars=ssAutoVertical |
27 | Vložte do Form1 komponentu TDbRadioGroup (záložka Data
Controls) pro hodnocení a nastavte vlastnosti: DbDbRadioGroup1.Caption = Hodnocení DbDbRadioGroup1.DataField = hodnoceni DbDbRadioGroup1.DataSource = Datasource1 DbDbRadioGroup1.Items=0 až 10 (povolené hodnoty - co řádek to hodnota) |
28 | Spusťte aplikaci a prověřte funkčnost |
Editace tabulky
29 | Spusťte aplikaci a pomocí navigátoru: - smažte řádek (tlačítko s košem) - editujte řádek (tlačítko s tužkou nebo dvojklik v poli) a potvrďte konec editace (tlačítko s fajfkou) |
30 | Ukončete aplikaci a vraťte se do Lazarus - po novém spuštění aplikace "smazaný" řádek existuje a změny nejsou uloženy |
31 | Vložte do události SQLQuery1.AfterDelete kód: ShowMessage('AfterDelete'); |
32 | Vložte do události SQLQuery1.AfterPost kód: ShowMessage('AfterPost'); |
33 | Spusťte a ověřte aktivitu při mazání a změně pole |
34 | Vložte do událostí SQLQuery1.AfterDelete a AfterPost
kód pro aktualizaci SQL: SQLQuery1.ApplyUpdates; (ShowMessage zakomentujte pomocí //) |
35 | Do Form1.FormClose před SQLQuery1.Close vložte příkaz uzavření
transakce: SQLTransaction1.Commit; |
36 | Spusťte aplikaci a vyzkoušejte mazání a změnu hodnot sloupce (ověřte po novém spuštění) |
37 | Zkuste ve spuštěné aplikaci přidat nový řádek (tlačítkem +) s autorem "A. B." - řádek je umístěn na místě vložení bez ohledu na správné řazení podle autorů |
38 | Přidejte do formuláře tlačítko s nápisem Refresh -
po kliknutí na tlačítko se má provést příkaz: SQLQuery1.Refresh; Spusťte aplikaci a po vložení nového řádku ověřte funkci tlačítka (tabulka je přeřazena podle abecedy) |
Samostatné cvičení
39 | Vytvořte v Lazarus novou aplikaci pratele.exe pro prohlížení a editaci tabulky pratele z databáze db08.sqlite (sloupce jmeno, mesto, team). Aplikaci umístěte do složky c:\temp\pratele |
Použijte vizuální komponenty TDbNavigator, TDbGrid | |
U tabulky TDbGrid nastavte záhlaví sloupců Jméno, Město, Tým a vhodné šířky sloupců | |
Řádky v DbGrid budou seřazeny abecedně podle jmen | |
Smažte z tabulky řádek se jménem "Josef" | |
Přidejte do tabulky pomocí vytvořené aplikace minimálně další dva řádky s vymyšlenými údaji | |
Přidejte do tabulky pratele pomocí sqlite3 nový sloupec poznamka typu varchar (alter table xxx add column yyy varchar;) | |
Doplňte do aplikace pratele.exe v Lazarus pole pro poznámku pomocí komponenty TDbMemo. Nakonec přidejte alespoň k jednomu řádku poznámku. | |
40 | Uložte a zavřete otevřené dokumenty a celé složky db08, citaty a pratele uložte na fileserver |