Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Hans Olav Norheim
Tabeller av objekter Klassen ArrayList
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Avhengigheter og installering
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Databasehåndtering med MySQL
Datamodellering og databaser Else Lervik, oktober 2012 Forelesning 11, uke 44 Å programmere databasetjeneren – JavaDB.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Sqlite Et lite eksempel på en SQL- database. SQL kan startes på ulike måter Kommandolinjeversjon or Windows –Programmet må innstalleres Hentes fra
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Variabler, datatyper og uttrykk
Utskrift av presentasjonen:

Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20 Å programmere mot en database Hva er JDBC?side 2 Databasedrivereside 3 Eksempeldatabaseside 4 Å få kontakt med databasenside 5 Sammenhengen mellom SQL datatyper, Java datatyper og getxxx()-metoderside 6 Et større eksempelside 7 En tykk klientside 8 Vi gjør klienten tynnere / applet som klientside 9-14 Transaksjonerside 15 Kompilerte SQL-setningerside 16

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 2 Hva er Java Database Connectivity (JDBC)? JDBC er –ikke et databasesystem, men muliggjør kommunikasjon med et slikt –ikke et ”pek og klikk, dra og slipp”-verktøy som for eksempel Microsoft Access, men de som lager slike verktøy kan bruke JDBC til å kommunisere med databasen. JDBC er et API som tilbyr klasser og metoder for å sende SQL- setninger til en database, og få et resultat tilbake. Dette kapitlet forutsetter kjennskap til relasjonsdatabaser og SQL.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 3 Databasedrivere JDBC Driver Manager JDBC-til-ODBC- driver ODBC-driver Microsoft Access Microsoft SQL Server Oracle Database Sybase Database Oracle-driverSybase-driver Java- applikasjon Java- applikasjon Java- applikasjon En databasedriver består av klasser som implementerer bestemte interface.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 4 Eksempeldatabase create table person( fornavn varchar(30) not null, etternavn varchar(30) not null, primary key (fornavn, etternavn)); insert into person values ('OLE', 'HANSEN'); insert into person values ('ANNE GRETHE', 'ÅS'); insert into person values ('JONNY', 'HANSEN'); fornavnetternavn OLEHANSEN ANNE GRETHEÅS JONNYHANSEN

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 5 Et eksempel på kontakt med databasen import javax.swing.*; import java.sql.*; class DatabaseKontakt { public static void main(String[] args) throws Exception { String databasedriver = "oracle.jdbc.driver.OracleDriver"; Class.forName(databasedriver); String brukernavn = JOptionPane.showInputDialog("Brukernavn: "); String passord = JOptionPane.showInputDialog("Passord: "); String databasenavn = Connection forbindelse = DriverManager.getConnection(databasenavn, brukernavn, passord); Statement setning = forbindelse.createStatement(); ResultSet res = setning.executeQuery("select * from person"); while (res.next()) { // må kalle next() også for å få tilgang til første linje i resultatsettet String fornavn = res.getString("fornavn"); String etternavn = res.getString("etternavn"); System.out.println(fornavn + " " + etternavn); } res.close(); setning.close(); forbindelse.close(); System.exit(0); // pga. at JOptionPane brukes uten foreldrevindu } Databasedriveren ligger på classes111.zip. C LASSPATH må inneholde classes111.zip. Denne filen inneholder bl.a. oracle.jdbc.driver.OracleDriver.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 6 Sammenhengen mellom SQL datatyper, Java datatyper og getxxx()-metoder CHAR, VARCHAR, LONGVARCHARStringgetString() NUMERIC, DECIMALjava.math.BigDecimalgetBigDecimal() BITbooleangetBoolean() TINYINTbytegetByte() SMALLINTshortgetShort() INTEGERintgetInt() BIGINTlonggetLong() REALfloatgetFloat() FLOAT, DOUBLEdoublegetDouble() BINARY, VARBINARY, LONGVARBINARYbyte[]getBytes() DATEjava.sql.DategetDate() TIMEjava.sql.TimegetTime() TIMESTAMPjava.sql.TimestampgetTimestamp()

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 7 Et større eksempel > Database finnAlle() endreNavn(gmlNavn: Navn, nyttNavn: Navn) registrerNyttNavn(navnet: Navn) slettPerson(navnet: Navn) kobleNedForbindelse() Tilrettelegger for RMI, men dette er selvfølgelig ikke nødvendig. Vis programliste 20.2 side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 8 En tykk klient :klientPC :Internett loiosh.stud.idb.hist.no :database :DatabaseTest :DatabaseImpl Database

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 9 Vi gjør klienten tynnere ved å flytte komponenten :DatabaseImpl over på tjenermaskinen Vi flytter belastning fra den enkelte PC til tjenermaskinen. Belastningen på nettet kan gå ned eller opp, avhengig av hvor mye som ”plukkes av” resultatet fra SQL-setningene før det sendes til klienten. Vi kan ha en applet eller en applikasjon på klientsiden. Antar i det følgende at vi har en applet på klientsiden. En applet kan bare kommunisere med den maskinen den ble lastet ned fra. Generelt kan vi ikke anta at web-tjener og databasetjener kjører på samme maskin. Appleten kommuniserer derfor med RMI-objekter som kjører på samme maskin som web-tjeneren. Disse objektene tar seg av kommunikasjonen med databasen. Hver klient / bruker må ha sin egen forbindelse til databasen –Et objekt av klassen DatabaseImpl setter opp en forbindelse til databasen. –En klient som kopler seg på må få tildelt en databaseforbindelse. –Klassen DatabaseForbindelseImpl gjør dette. –Klienten henvender seg til et RMI-objekt av denne klassen.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 10 DatabaseForbindelse: grensesnitt og implementasjon interface DatabaseForbindelse extends Remote { Database reserverDatabaseforbindelse(String brukernavn, String passord) throws Exception; } class DatabaseForbindelseImpl extends UnicastRemoteObject implements DatabaseForbindelse { public DatabaseForbindelseImpl() throws RemoteException { } public Database reserverDatabaseforbindelse(String brukernavn, String passord) throws Exception { return new DatabaseImpl(brukernavn, passord); }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 11 Tjenerprogram og utdrag av klientprogram class DatabaseTjener { public static void main(String[] args) { try { System.out.println("Skal lage et tjenerobjekt som klienter kan henvende " + "seg til for å oppnå kontakt med databasen."); DatabaseForbindelse databasekontakt = new DatabaseForbindelseImpl(); System.out.println("Nå er det laget!"); Naming.rebind("Navnedatabase", databasekontakt); System.out.println("Nå venter vi bare på at noen skal kontakte oss..."); } catch (Exception e) { System.out.println("Feil oppstått: " + e); } } // slutt tjenerprogram /* På klientsiden: */ String url = "rmi://" + tjenermaskin + "/Navnedatabase"; DatabaseForbindelse kontakt = (DatabaseForbindelse) Naming.lookup(url); Database databasen = kontakt.reserverDatabaseforbindelse(brukernavn, passord); databasen.registrerNyttNavn(…); databasen.slettPerson(…);

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 12 Brukergrensesnitt

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 13 En applet har kontakt med en database via RMI :nettleser Navnedatabase tjener.idb.hist.no DatabaseForbindelse :applet :klientPC :Internett :webtjener :rmiregister Database :DatabaseTjener loiosh.stud.idb.hist.no :LAN :database :DatabaseImpl

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 14 Vis programliste 20.5 side Eventuelt også klassen NavneDialog, programliste 15.5 side Gjør oppgaven side 635.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 15 Transaksjoner En transaksjon er en logisk enhet med arbeid og kan bestå av flere oppdateringssetninger mot databasen. Eksempel: Dersom penger skal overføres fra én konto til en annen er det viktig at begge kontoene endrer saldo. Dersom en feil inntreffer kan vi ikke risikere at bare en av kontoene har endret saldo. OK gjennomført transaksjon: Stadfest! (commit) Ikke ok gjennomført transaksjone: Rull tilbake! (rollback) Hver SQL-setning er en transaksjonsenhet. Interfacet Connection gir oss mulighet til å lage transaksjoner som består av mer enn en SQL-setning –public void setAutoCommit(boolean autocommit) // standard er true –public void commit() –public void rollback() Gjør oppgave 1 side 639.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 20, side 16 Kompilerte SQL-setninger Java-programmet sender SQL-setningen til databasesystemet. Databasesystemet kompilerer setningen og setter opp en plan for mest mulig effektivt søk i databasen. Unødvendig å kompilere på nytt dersom bare konstantverdier byttes ut: –select * from person where fornavn like ”Anne” and etternavn like ”Olsen”; –select * from person where fornavn like ”Ulf” and etternavn like ”Hansen”; Vi kan lage et ferdig kompilert setningsobjekt ved å bruke klassen PreparedStatement. Eksempel: String sqlSetning = "select * from person where fornavn like ? and etternavn like ?"; PreparedStatement setning = forbindelse.prepareStatement(sqlSetning); setning.setString(1, ”Anne”); // Søkekriteriene kan selvfølgelig leses inn, setning.setString(2, ”Olsen”); // se programliste 20.6 side 638. ResultSet res = setning.executeQuery(); while (res.next()) { …osv….