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

Like dokumenter
Java Database Connectivity (JDBC) Norvald H. Ryeng

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

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

Transaksjoner og flerbrukerproblematikk. Transaksjoner

JDBC. Java Data Base Connec.vity

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Applikasjonsutvikling med databaser

Eksamen i Internetteknologi Fagkode: ITE1526

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

Sikkerhet og tilgangskontroll i RDBMS-er

INF1300 Det meste av resten av

INF1300 Introduksjon til databaser

Bruke SQL fra Python. Med Psycopg2

ORDBMS og OODBMS i praksis

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

Å programmere databasetjeneren JavaDB. Programkoden ligger i databasen

Oppgave 1 (Opprett en database og en tabell)

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

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

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

1. Innføring i bruk av MySQL Query Browser

Databaser kort intro. Tom Heine Nätt

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

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

Signalgrensesnitt for Trafikanten Pluss

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

Leksjon 7. Filer og unntak

SQL-omgivelser. SQL-omgivelse

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

INF Notat om I/O i Java

Løsningsforslag Test 2

Læringsmål for forelesningen

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

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

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!

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.

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

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

Introduksjon til fagfeltet

Repetisjon: Normalformer og SQL

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

Leksjon 7. Filer og unntak

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

IN2090 Introduksjon til databaser

Oppgave #1 Tablespacer, Tabeller, Indexer, og Brukere

INF Notater. Veronika Heimsbakk 10. juni 2012

Del 3: Evaluere uttrykk

LO191D/LC191D Videregående programmering eksamen des. 2009

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

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

Utvikling fra kjernen og ut

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)

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)

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

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Datamodellering og databaser SQL, del 2

MySQL. Historikk. Nedlasting og installasjon

INF1000 Eksamen 2014 (modifisert)

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

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

Relasjoner terminologi

Kapittel 8: Programutvikling

Utvikling fra kjernen og ut

HØGSKOLEN I SØR-TRØNDELAG

Forelesning inf Java 5

Forelesning inf Java 5

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Transkript:

1 2 Java Database Connectivity (JDBC) Norvald H. Ryeng ryeng@idi.ntnu.no 3 4 Denne forelesningen Hva er Derby og Java DB? Hva er Derby og Java DB? Hva er JDBC? Slik fungerer det Slik gjør dere det (kokebok) 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

7 8 Hva er JDBC? De viktigste grensesnittene 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 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 10 Koble til databasetjeneren java.sql.connection 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( );.createstatement() Lag et Statement-objekt.prepareStatement( ) Lag en halvferdig spørring.setautocommit( ) Commit etter hver executequery/executeupdate? (Standard: ja).commit().rollback() 11 12 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. 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 14 PreparedStatement ps = conn.preparestatement("insert INTO Poststed " + "VALUES (?,?)"); Her daughter is named Help I'm trapped in a driver's license factory. xkcd by Randall Munroe, http://xkcd.com/327/ ps.setint(1, 9040); ps.setstring(2, "NORDKJOSBOTN"); ps.executeupdate(); ps; 15 16 java.sql.resultset java.sql.sqlexception.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. 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 18 Spørsmål? Kokebok

19 20 0. Importer java.sql.* 1. Last inn Derby-driveren import java.sql.*; Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); Importerer JDBC-pakken inn i navnerommet, slik at man slipper å skrive java.sql. foran alle klasse- og grensesnittnavn. Sørger for at vi kan snakke med databasetjeneren Følger med nyere Java 21 22 2. Koble til databasen 3. Lag et Statement-objekt Connection conn = DriverManager.getConnection("jdbc:derby:mindb ); Statement stmt = conn.createstatement(); Sørger for å sende SQL-setninger til databasetjeneren. Kan sende spørringer som returnerer resultat (SELECT) Kan sende spørringer som ikke returnerer resultat (INSERT, DELETE) 23 24 4. Utfør spørringen 5. Les resultatet ResultSet rs = stmt.executequery("select * " + "FROM poststed WHERE sted='trondheim' "); Merk: Ikke semikolon på slutten av spørringen Apostrof rundt tekststrenger 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 26 6. Lukk ResultSet-objektet 7. Lukk Statement-objektet rs; stmt; Veldig viktig! Hvis man har for mange ResultSet-objekter oppe, vil man få en feil når man utfører neste spørring. 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 28 8. Lukk Connection-objektet 9. Avslutt integrert Derby conn; Kobler fra databasetjeneren 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 30 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/ Spørsmål? 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