Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag

 

JavaDB via kommandolinjeverktøyet ij


Nødvendige miljøvariabler

Du må sette miljøvariabler (se notat om miljøvariabler):

·        Ny variabel: DERBY_INSTALL skal peke til installasjonskatalogen, f.eks. C:\DerbyDB eller C:\Java6\db. (Å finne installasjonskatalogen i NetBeans: Velg Services/Databases og høyreklikk på JavaDB. Velg deretter Properties.)
Heretter lar vi DERBY_INSTALL referere til denne installasjonskatalogen. Alle steder der det står DERBY_INSTALL nedenfor, blir skiftet ut med katalogen der du har lagret systemet.

·        Ny variabel (noen har kanskje denne fra før): JAVA_HOME skal peke til installasjonskatalogen for Java, f.eks. C:\java6\

·        Du må videre utvide miljøvariabelen CLASSPATH. Følgende jar-filer må legges inn:

%DERBY_INSTALL%\lib\derbyclient.jar;%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL% \lib\derbytools.jar;%DERBY_INSTALL%\lib\derbynet.jar;

Script for kjøring av tjener og klient

Du trenger følgende tre script:

Disse scriptene finner du i en underkatalog til DERBY_INSTALL. Hos meg ligger de i en underkatalog som heter bin, i en annen installasjon har jeg fått oppgitt at de ligger i underkatalogen frameworks\NetworkServer\bin. Det kan vel også finner andre konfigurasjoner avhengig av Java-versjon du har lastet ned.

Nedenfor forutsetter jeg at du har funnet fram til disse scriptene.

Å starte databasetjeneren

Databasetjeneren må kjøre før vi kan gjøre noe som helst annet:

Start tjeneren ved å kjøre scriptet startNetworkServer.bat, du kan f.eks. klikke på filen.
Tjeneren forutsetter at databasene ligger lagret i underkataloger i den katalogen der du kjører dette scriptet fra.

(Hvis du bruke databaser som ligger et bestemt sted, f.eks. NetBeans-databasene, må du utvide miljøvariabelen PATH med %DERBY_INSTALL%\bin;
Dette gjør det også mulig å starte tjeneren fra NetBeans, slik du kanskje er vant med - i stedet for å bruke
startNetworkServer.bat)

Da skal det åpne seg et kommandovindu med følgende tekst (versjonsnr kan være noe annet - det viktigste er nederste linje):

Security manager installed using the Basic server security policy.
Apache Derby Network Server - 10.3.1.4 - (561794)
started and ready to accept connections on port 1527 at 2007-11-13 09:45:41.219 GMT

Dette vinduet skal du ikke lukke. Det viser at tjenerprogrammet kjører på port 1527.

La oss prøve å sette opp et par klienter mot databasetjeneren. I eksemplene nedenfor er det du skal skrive merket med fete typer.

Klient 1

1.     Start scriptet  ij.bat. Du får fram merket ij> der du skal skrive inn kommandoer.

2.      Lag en ny database på følgende måte (databasenavn, brukernavn og passord skal være som gitt her):

   ij>connect 'jdbc:derby://localhost:1527/persondata;user=vprg;password=vprg;create=true';

      Husk semikolon! Sjekk at katalogen persondata er opprette der du startet tjeneren fra.

3.      Kjør sql-setningene som lager tabellen person og legger inn data. Du kan eventuelt legge setningene på en tekstfil og kjøre den (lurt dersom du trenger å kjøre de samme setningene flere ganger!) Dersom du kaller filen person.sql og legger den i katalogen c:\temp\, kan du kjøre setningene på filen ved å skrive (inne i ij):

   ij>run 'c:\temp\person.sql';

4.    Sjekk at databasen eksisterer som en egen underkatalog i DERBY_INSTALL\bin\, eventuelt i DERBY_INSTALL\frameworks\NetworkServer\bin.

5.   Prøv noen av select-setningene fra forrige avsnitt, eksempel:

   ij> select * from person;

PERSNR |FORNAVN |ETTERNAVN
-------------------------------------------------------------------------
100 |Ole |Hansen
101 |Anne Grethe |Ås
102 |Jonny |Hansen

3 rows selected

Du skal nå ikke lukke ij!

Klient 2

1.      Start en forekomst til av ij.

2.      Kople opp mot databasen på samme måte som for klient 1 - du kan nå sløyfe create=true (men det gjør ikke noe om det er med.) Nå kjører altså ij i to vinduer. Med andre ord: To klienter mot samme databasetjener.

3.      Kjør sql-setninger (også insert/update/delete) vekselvis i de to klientene slik at du ser at endringer som gjøres av den ene, vises i den andre.

Du må gjerne starte flere forekomster av ij. Og/eller et Javaprogram som du har skrevet selv.

Avslutt med å kople ned ij-klientene med kommandoen

 ij>exit;

Viktig med ryddig avslutning: Stopp tjeneren ved å kjøre scriptet stopNetworkServer.bat. Da vil vinduet lukke seg.

Eksempel på Java-program mot databasen

Vi forutsetter nå at du har databasen persondata med tabellen person, og at den inneholder tre rader med data. Slik som forklart foran. Sørg for at databasetjeneren kjører.

Kompiler og kjør programmet VisDatabaseClient.java.

Får du kjørefeilen

Exception in thread "main" java.lang.ClassNotFoundException:org.apache.derby.jdbc.ClientDriver ...
....

betyr det at programmet ikke finner databasedriveren. Det vil si at CLASSPATH er feil. Sjekk denne en gang til. Husk at hele navnet på jar-filen skal være med, ikke bare stien fram til filen.

For JavaDB-brukere skal det være tilstrekkelig å utvide CLASSPATH med <javakatalog>\db\lib\derbyclient.jar, dvs at CLASSPATH skal se slik ut (om dette er det første du legger inn der):

    .;<javakatalog>\db\lib\derbyclient.jar

Merk punktumet først! Det refererer til klasser på stående katalog. Glemmer du det får du ikke til å kjøre java-programmene dine i det hele tatt.

Sist oppdatert: 28.10.2011, Else Lervik