6.10. Programování bezserverových databází

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
Db
DbRadioGroup1.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