Cil projektu
Cilem tohoto projektu bylo upravit javovy program vytvoreny kolegou
Pinosem tak,
aby zvladal co mozna nejvice operaci nad databazi Postgres a posleze tento
program vyzkouset na nejake vetsi databazi. Vetsinu casu jsem vsak stavil
prohlizenim dokumentace a zjistovanim, proc to nefunguje. Navic jsem
zjistil, ze zpracovani vstupu a vystupu je udelano docela robustne a to
vcetne zpracovani chyb, takze upravy zdrojaku nebyly nutne. V nasledujicim
textu je proto popsany hlavne moje zkusenosti s pouzivanim JDBC driveru
na fakulte informatiky.
Vsechno bylo zkouseno na dvou strojich: artemis a pyrrha,
kde jede
samotny server (postmaster). Vsechny priklady se tedy vztahuji k
temto dvema pocitacum.
Priprava pred samotnym pouzitim
Pro praci s timto programem je potreba udelat nekolik veci.
- pridat modul JDK - na artemide je vyzkouseny jdk1.1.5, jdk1.1.6 a
jdk1.2b2, na pyrrze pak jdk1.1
- nastavit cestu k JDBC driveru, krety je
v souboru postgresql.jar. Tato cesta se nastavuje promennou CLASSPATH
napriklad takto:
export CLASSPATH="./postgresql.jar:./"
- Zkompilovat zdrojak pokud uz neni zkompilovany. Objevi se tri javovske
tridy Select.class, UsageException.class a Test.class.
Ke spusteni slouzi trida Test.class, ktera obsahuje main funkci.
Na prikazovem radku je mozne zadat nekolik parametru.
-v = verbose mode
-f file = ulozeni vysledku do souboru nebo vypis na stamdartni vystup
-q qury = SQL dotaz
-u user = uzivatelske jmeno pro prihlaseni k databazi
-d url = URL vzdaleneho stroje a/nebo nazev databaze
Pokud nejaky parametr vynechame, program se na neho zepta v prubehu.
Komplikace se dvema verzemi Posgtresu
Protoze na pyrrze bezi v soucasne dobe dve verze postgresu a to Postgres95
a PostgreSQL verze 6.3.2, nastavaji komplikace z pristupem na servery.
PostgreSQL bezi na standartnim portu 5432 zatimco starsi Postgre95 na
portu 5433. Navic ale PostgreSQL odmita spojeni z venku. Proto, pokud
se pripojujete lokalne z pyrrhy, je potreba zadat jen jmeno databaze
(bez cisla portu) zatimco pro pripojeni ze vzdaleneho pocitace je
nutne zadat port 5433.
Aby toho nebylo jeste malo, PostgreSQL pouziva jako implicitni protokol
Unix Domain, ale JDBC driver umi pracovat jen s TCP/IP. Proto je nutne
spustit posmaster s parametrem -i aby pouzival TCP/IP.
Priklady pouziti
Zde jsou dva priklady, jak se to cele pouziva:
Z artemidy:
java Test -v -u login -d '//pyrrha:5433/databaze'
-q "SELECT * FROM tabulka"
Z pyrrhy:
java Test -v -u login -d databaze -q "SELECT * FROM tabulka"
kde login je vase uzivatelske jmeno.
Konkretneji:
java Test -u oslejsek -d '//pyrrha:5433/internet' -q "select count(*) from
pui where mesto='Zlin'"
Radek Oslejsek <oslejsek@fi.muni.cz>
Last modified: Tue Dec 1 17:44:39 1998