Práca s databázou
Modul DBI
Perl pre prácu s databázou využíva modul DBI.pm. Ten slúži pre prácu s ľubovoľným typom databázy.
Poskytuje množinu metód, premenných a konvencií, ktoré dohromady tvoria rozhranie nezávislé na type databázy.
Výhodou je to, že tento modul nedefinuje svoj jazyk pre prácu s databázou a dátami, ale je len sprostredkovateľom medzi skriptom a databázovým strojom.
S ním zvyčajne komunikuje pomocou jazyka SQL, metódy DBI nám preto umožňujú príkazy v tomto jazyku databáze doručiť.
Funkcie modulu DBI
Modul DBI definuje triedu objektov DBI, ktorá obsahuje svoje metódy. Tieto metódy sú definované ako metódy triedy, preto sa volajú nasledovným spôsobom: DBI->metóda.
Taktiež nám poskytuje aj pomocné funkcie, ktoré nie sú implementované objektovo. Tie sú volané nasledovne: DBI::funkcia.
connect
Táto metóda vytvorí spojenie s databázou podľa zadaných parametrov. Syntax funkcie je:
DBI->connect($zdroj_dát, $užívateľ, $heslo)
Prvý argument funkcie nám hovorí o akú databázu ide a ako sa k nej má pristupovať. Všetky tieto informácie sa musia nachádzať
v jednom reťazci, ktorý sa nazýva zdroj dát. Má nasledujúci formát:
"dbi:meno ovládača:ďalšie informácie"
Reťazec dbi: je na začiatku vždy povinný. Potom nasleduje meno ovládača databázy, s ktorou chceme pracovať.
my $host_name = "localhost";# do premennej $host_name uložíme názov servera
my $db_name = "novak";# do premennej $db_name uložíme meno databázy
my $dbh = DBI->connect("DBI:mysql:$db_name:$host_name", "root", "password")# pripojenie k databáze
or die "Nepodarilo sa spojiť s databázou";# výpis, ak je pripojenie neúspešné
connect_cached
Táto funkcia má rovnaké argumenty ako funkcia connect. Nadviaže spojenie s databázou a objekt pre prácu
s databázou si uloží do hashu na pozíciu určenú argumentom funkcie. Ak neskôr bude požadované spojenie s rovnakými vlastnosťami, bude vrátený
tento objekt (za predpokladu, že spojenie je stále aktívne).
disconnect
Metóda slúži na zrušenie spojenia medzi databázou a objektom ovládača databázy. Je automaticky volaná v deštruktore objektu (DESTROY).
$dbh->disconnect;
prepare
Funkcia pripraví príkaz na vykonanie, vytvorí pre tento príkaz objekt ovládača príkazu a vráti ho.
$dbh->prepare($príkaz);
$dbh->prepare($príkaz, \%atributy);
do
Funkcia pripraví a vykoná zadaný príkaz. Používa sa v prípadoch, keď nepotrebujeme získať dáta z databázy (tzn. okrem príkazu SELECT všetky ostatné - napr. DELETE, INSERT, UPDATE)
$dbh->do($príkaz);
$dbh->do($príkaz, \%atributy);
$dbh->do($príkaz, \%atributy, @hodnoty);
$dbh->do("INSERT INTO ludia (meno,priezvisko) VALUES ('$meno', '$priezvisko')");
ping
Funkcia zistí, či databáza beži a či s ňou existuje spojenie. Ak áno, je vrátená pravdivá hodnota. Implicitne sa nič nedeje a táto hodnota má podobu "0 but true".
$dbh->ping;

