Java Database Connectivity (JDBC) Norvald H. Ryeng

Like dokumenter
Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen

Tilkobling og Triggere

Videregående programmering 6

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Applikasjonsutvikling med databaser

Bruke SQL fra Java. Med JDBC (Java Database Connec/vity)

JDBC. Java Data Base Connec.vity

Eksamen i Internetteknologi Fagkode: ITE1526

ORDBMS og OODBMS i praksis

Sikkerhet og tilgangskontroll i RDBMS-er

Bruke SQL fra Python. Med Psycopg2

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

INF1300 Det meste av resten av

Å programmere databasetjeneren JavaDB. Programkoden ligger i databasen

8. JDBC-programmering med tilrettelegging for webapplikasjoner

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

INF1300 Introduksjon til databaser

Oppgave 1 (Opprett en database og en tabell)

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

1. Innføring i bruk av MySQL Query Browser

IN Notat om I/O i Java

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Innocent Code Kapittel 1: The Basics Kapittel 2: Passing Data to Subsystems

Databaser kort intro. Tom Heine Nätt

INF1300 Introduksjon til databaser

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

INF1000-SIKT - Notat om I/O i Java

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

Arne Maus, Ifi. delvis lån av gamle foiler

1. SQL datadefinisjon og manipulering

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

Metaspråket for å beskrive grammatikk

SQL-omgivelser. SQL-omgivelse

Leksjon 7. Filer og unntak

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Løsningsforslag Eksamen V08. Oppgave 1. Oppgave 1.1. Oppgave 1.2. Oppgave 1.3. Se i boka/forelesningsnotatene:-) Se i boka/forelesningsnotatene:-)

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Signalgrensesnitt for Trafikanten Pluss

INF Notat om I/O i Java

Løsningsforslag Test 2

Læringsmål for forelesningen

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

INF1010 våren 2018 tirsdag 23. januar

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

Vårt system kan kjøres ved å skrive. STUD1 konto fredo 37 (holdeplass)

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Introduksjon til fagfeltet

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Repetisjon: Normalformer og SQL

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

INF 1010, vår 2005 Løsningsforslag uke 11

Leksjon 7. Filer og unntak

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Oppgave #1 Tablespacer, Tabeller, Indexer, og Brukere

INF Notater. Veronika Heimsbakk 10. juni 2012

LO191D/LC191D Videregående programmering eksamen des. 2009

Del 3: Evaluere uttrykk

Utvikling fra kjernen og ut

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Enkel lesing og skriving i Java

>>12 Arbeide med MySQL

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Løse reelle problemer

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF Puslegruppa - Kom i gang med PusleChat

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

En lett innføring i foreninger (JOINs) i SQL

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Programvareutvikling hos Sun Microsystems. Jørgen Austvik Sun Microsystems Database Technology Group

J2EE og distribuerte systemer Leksjon 10: Entity Beans (BMP)

Introduksjon til databaseprogrammering med Java

INF1000 : Forelesning 1 (del 2)

HØGSKOLEN I SØR-TRØNDELAG

Læringsmål for forelesningen

Bruk av class Scanner, split(), FileWriter og Formatter som alternativ til easyio i INF1000.

Øvingsforelesning 1 Python (TDT4110)

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Datamodellering og databaser SQL, del 2

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

MySQL. Historikk. Nedlasting og installasjon

INF1000 Eksamen 2014 (modifisert)

IN2090 Introduksjon til databaser

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Kapittel 8: Programutvikling

Utvikling fra kjernen og ut

Alle vet det, men ikke alle gjør det! Skalerbarhet ved BIND i IN-lister

HØGSKOLEN I SØR-TRØNDELAG

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

Forelesning inf Java 5

Transkript:

1 Java Database Connectivity (JDBC) Norvald H. Ryeng ryeng@idi.ntnu.no

2

3 Denne forelesningen Hva er Derby og Java DB? Hva er JDBC? Slik fungerer det Slik gjør dere det (kokebok)

4 Hva er Derby og Java DB? Apache Derby er et DBMS skrevet i og for Java Java DB er Suns distribusjon av Apache Derby Kan kjøre som egen prosess (network server) Kan integreres og kjøres i samme JVM som applikasjonen (embedded) Krever at man gjør litt ekstra magi

5 Derby som selvstendig tjener

6 Derby integrert i applikasjonen

7 Hva er JDBC? Vanligste måte å bruke databaser i Java Følger med JRE og JDK (java.sql.*) Uavhengig av DBMS (krever driver) Spørringer skrives i SQL

8 De viktigste grensesnittene java.sql.connection Tilkobling til en databasetjener java.sql.statement Brukes for å utføre spørringer mot databasen java.sql.resultset Resultatet av en spørring

9 Koble til databasetjeneren Laste driver vha. Class.forName() Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); Koble til med DriverManager: Holder styr på drivere Lager tilkoblinger (Connection-objekter) Connection conn = DriverManager.getConnection("jdbc:derby:mindb");

10 java.sql.connection.createstatement() Lag et Statement-objekt.prepareStatement( ) Lag en halvferdig spørring.setautocommit( ) Commit etter hver executequery/executeupdate? (Standard: ja).commit().rollback().close()

11 java.sql.statement.executeupdate("insert INTO tabell VALUES ( )") Utfører en operasjon som ikke returnerer noe resultat (f.eks. INSERT og UPDATE). Returnerer antall rader som påvirkes..executequery("select * FROM tabell") Utfører en spørring og returnerer et ResultSet med svar på spørringen..close()

12 java.sql.preparedstatement Halvferdig spørring hvor man bare fyller ut verdier Effektivt ved gjentatte spørringer Sikrere Penere kode? Ryddigere å definere spørringen bare ett sted Mange linjer for lite arbeid

13 java.sql.preparedstatement Her daughter is named Help I'm trapped in a driver's license factory. xkcd by Randall Munroe, http://xkcd.com/327/

14 java.sql.preparedstatement PreparedStatement ps = conn.preparestatement("insert INTO Poststed " + "VALUES (?,?)"); ps.setint(1, 9040); ps.setstring(2, "NORDKJOSBOTN"); ps.executeupdate(); ps.close();

15 java.sql.resultset.next() Går til neste rad. Starter før første rad, så man må kalle next() før man gjør noe annet. Returnerer true hvis det er en neste rad og false hvis det ikke er flere rader igjen..getint(k) Leser en int fra kolonne k. k kan enten være kolonnenummeret (starter på 1) eller kolonnenavnet..getstring(k) Leser en String fra kolonne k..close()

16 java.sql.sqlexception Unntak som kastes dersom noe går galt Må fanges og håndteres Løsning: sett alle JDBC-operasjoner innenfor try{ }: try { // JDBC-kode } catch (SQLException e) { // Ev. catch (Exception e) e.printstacktrace(); }

17 Spørsmål?

18 Kokebok

19 0. Importer java.sql.* import java.sql.*; Importerer JDBC-pakken inn i navnerommet, slik at man slipper å skrive java.sql. foran alle klasse- og grensesnittnavn.

20 1. Last inn Derby-driveren Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); Sørger for at vi kan snakke med databasetjeneren Følger med nyere Java

21 2. Koble til databasen Connection conn = DriverManager.getConnection("jdbc:derby:mindb");

22 3. Lag et Statement-objekt Statement stmt = conn.createstatement(); Sørger for å sende SQL-setninger til databasetjeneren. Kan utføre spørringer som returnerer resultat (SELECT) Kan utføre operasjoner som ikke returnerer resultat (INSERT, DELETE)

23 4. Utfør spørringen ResultSet rs = stmt.executequery("select * " + "FROM poststed WHERE sted='trondheim' "); Merk: Ikke semikolon på slutten av spørringen Apostrof rundt tekststrenger

24 5. Les resultatet while (rs.next()) { System.out.print(rs.getInt(1)); System.out.print(" "); System.out.println(rs.getString(2)); } getxxx() finnes for de viktigste datatypene Tar kolonnenummer eller navn som parameter

25 6. Lukk ResultSet-objektet rs.close(); Frigjør ressurser Veldig viktig! Hvis man har for mange ResultSet-objekter oppe, vil man få en feil når man utfører neste spørring.

26 7. Lukk Statement-objektet stmt.close(); Frigjør ressurser Et Statement-objekt kan brukes flere ganger Dvs. at man kan kjøre.executequery() og.executeupdate() flere ganger med samme Statement-objekt. Hvorfor ha flere Statement-objekter? Man kan kun ha ett ResultSet-objekt åpent for hvert Statement-objekt.

27 8. Lukk Connection-objektet conn.close(); Frigjør ressurser Kobler fra databasetjeneren

28 9. Avslutt integrert Derby try { DriverManager.getConnection("jdbc:derby:;shutdown=true"); } catch (SQLException e) { /* alltid */ } Skriver sjekkpunkt Ikke nødvendig for andre DBMS N.B. Kaster alltid unntak!

29 Mer informasjon Java API-dokumentasjon http://java.sun.com/javase/6/docs/api/ Notater og veiledninger fra TDT4145 http://www.idi.ntnu.no/emner/tdt4145/oppskrifter/ The Java Tutorial JDBC Database Access http://java.sun.com/docs/books/tutorial/jdbc/index.html Apache Derby Tutorial http://db.apache.org/derby/papers/derbytut/index.html

30 Spørsmål?