Práca s databázou

Porovnanie :: PHP | Python

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é

Porovnávacie príklady

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')");

Porovnávacie príklady

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;