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.
  1. pridat modul JDK - na artemide je vyzkouseny jdk1.1.5, jdk1.1.6 a jdk1.2b2, na pyrrze pak jdk1.1
  2. nastavit cestu k JDBC driveru, krety je v souboru postgresql.jar. Tato cesta se nastavuje promennou CLASSPATH napriklad takto:
    export CLASSPATH="./postgresql.jar:./"
  3. 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