INTRODUKTION TILL JDBC



Relevanta dokument
INTRODUKTION TILL SQLJ & MAKEFILE

Klientprogrammering mot databaser

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Sample exam questions. Database exam TIG058

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Introduktion till Jasmine 1.2 ODQL

FÖ 07 - JDBC Åtkomst till databaser från applikationer med Java - exempelkod -

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

2D1339 Programkonstruktion för F1, ht 2004

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Föreläsning 3-4 Innehåll

Lösningsförslag, tentamen i Databaser

Anteckningar 1: Grundläggande saker

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

F4. programmeringsteknik och Matlab

2D1342 Programkonstruktion för F1, ht 2006

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Att skriva till och läsa från terminalfönstret

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Att använda Java SE JDK 6

Classpath. Class loading + resurser. Class loader. jar-filer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Kort om klasser och objekt En introduktion till GUI-programmering i Java

SMD 134 Objektorienterad programmering

Funktionsbeskrivning

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Typkonvertering. Java versus C

DB2-åtkomst från WebSphere

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

TDIU01 - Programmering i C++, grundkurs

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

ADO.NET Murach Kapitel 17-20

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Stored procedure i ASP.NET

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Att använda Java SE JDK 6

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

TENTAMEN OOP

Programmeringsteknik med C och Matlab

Applikationsprogramgränsnitt mot relationsdatabaser

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Tentamen OOP

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

TDDC77 Objektorienterad Programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

4.4 Swing ett interaktivt grafiskt gränssnitt

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Administrationsmanual ImageBank 2

Stored procedure i ASP.NET

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Föreläsning 5-6 Innehåll

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Kompilera och exekvera Javakod

Objektorienterad Programmering (TDDC77)

Tentamen ID1004 Objektorienterad programmering May 29, 2012

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Programmering för språkteknologer II, HT2011. Rum

JAVA Mer om klasser och objektorientering

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

2D1339 Programkonstruktion för F1, ht 2003

ID1004 Laboration 4, November 2012

Lektion 5 HTML, CSS, PHP och MySQL

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad programmering i Java

Objektorienterad programmering i Java

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Övningsuppgifter kapitel 8

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

2D1339 Programkonstruktion för F1, ht 2003

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

TUTORIAL: SAMLING & KONSOLL

Programmering för språkteknologer I, VT2012. Rum

Övningar Dag 2 En första klass

Databasutveckling Introduktion till SQL och TSQL

Microsoft's Windows Installer

Transkript:

INTRODUKTION TILL JDBC Vad är JDBC? JDBC står för Java DataBase Connectivity. JDBC ingår i Java och består av en del klasser som har hand om databasfunktionalitet. Med Java följer JDBC-ODBC Bridge driver, men man kan installera även andra DBMS specifika drivers om man så vill. I den här introduktionen kommer vi att använda IBM:s DB2 JDBC driver (COM.ibm.db2.jdbc.app.DB2Driver). Alternativt kan man använda den JDBC-ODBC Bridge driver. Vad kräver det? För att kunna kompilera och köra ett JDBC Java program (kallat JDBC program i fortsättningen) måste man: ha JDK installerat på datorn. ha ODBC, eller en DBMS specifik driver installerad på datorn Ett JDBC program kompileras med java kompilatorn (kommandot javac). När programmet är färdigtkompilerat kan man köra det genom att köra den skapade.class filen. Det gör man med kommandot java och klassnamnet. JDBC kan användas i alla sorter Java program. Man kan skapa en applet eller en servlet som använder JDBC. JDBC delen är oberoende av vilken typ av Java program man skriver. JDBCAppa exemplet JDBCAppa är namnet på JDBC exemplet som finns att ladda ner från \\Db-srv-1\StudKursInfo\IS4 vt2003\myjdbctest (man hittar dit via "Network Neighborhood") Där finner man följande fil: JDBCAppa.java Skapa en egen katalog och kopiera dit programmet! JDBCAppa.java är det okompilerade JDBC programmet. Programmet kan kompileras med java kompilatorn (javac) och köras med kommandot java JDBCAppa. Programmet kan också ta emot två parametrar, username och password, som kan användas för databas kopplingen. Här är en förklaring av de viktigaste JDBC kommandon som finns i JDBCAppa.java: I början av programmet finns följande rad: import java.sql.*; Det är java.sql klassbiblioteket som innehåller alla JDBC komponenter. Sidan 1 av 5

I JDBCAppa klassen finner man först en del variabeldeklarationer: // DB connection variable static protected Connection con; // DB access variables private String URL = "jdbc:db2:sample"; private String userid = ""; private String driver = "COM.ibm.db2.jdbc.app.DB2Driver"; private String password = ""; Con är variabeln som kommer hålla i databaskopplingen, resten kommer att användas för att få en databas koppling. URL innehåller databasnamnet som är associerat till drivern som finns i variabel driver. I slutet på JDBCAppa.java finns metoden main(). Det är denna metod som körs först, när man kör programmet. Den gör följande: Först skapar den en instans av klassen JDBCAppa. Sedan kontrollerar den de inkommande parametrarna. Till slut anropar main() metoderna connect(), select() och update() i den nya instansen av JDBCAppa (kallad t). Metoden connect() gör följande: Först laddar den rätt driver med kommandot Class.forName(getDriver()); Sedan skapar den en koppling och lägger den i variabel con med kommandot con = DriverManager.getConnection(getURL(), getuserid(), password); Till slut sätter den databaskopplingens AutoCommit till false: con.setautocommit(false); Det betyder att alla ändringar som görs via den databaskopplingen kommer inte att registreras i databasen förrän man gör commit. Metoden select() gör följande: Först deklareras variablerna query, rs och stmt, som kommer att användas för att exekvera en SELECT sats och ta emot resultatet. SELECT satsen placeras i variabeln query: query = "SELECT empno, firstnme from employee;"; Variabeln stmt kopplas till en Statement som är associerat till kopplingen con: Sidan 2 av 5

stmt = con.createstatement(); Variabeln rs tilldelas resultatet när SELECT satsen i query körs med hjälp av stmt: rs = stmt.executequery(query); Metoden executequery() används när man har en SQL sats som returnerar något resultat, som till exempel SELECT satser. Sedan gäller det bara att gå igenom resultatet och skriva ut det: while (rs.next()) { System.out.print(" empno= " + rs.getstring("empno")); System.out.print(" "); System.out.println(" firstname= " + rs.getstring("firstnme")); } Metoden next() går framåt i resultatet så att nästa rad blir den aktuella. Om det inte finns flera rader returneras false. Metoden getstring() returnerar värdet som finns i aktuell rad och kolumn. Kolumnen kan anges antingen med kolumnnamnet eller med kolumnposition. Alltså rs.getstring(1) skulle kunna användas istället för rs.getstring("empno")). Istället för metoden getstring() kan man använda en av följande metoder beroende på kolumnens datatyp: getdate() getdouble() getfloat() getint() getstring() getlong() getbyte() getboolean() I sista delen av metoden select() används metoden getint() för att hämta ett heltal. Resten av logiken där är exakt samma som tidigare. Metoden update() jobbar istället med någonting som kallas för PreparedStatement. Skillnaden från en vanlig Statement (som användes i metoden select()) är att man kan använda parametrar i SQL satserna. En parameter i en SQL sats markeras med ett frågetecken. Frågetecknet kommer så småningom att bytas ut mot det riktiga värdet. Variabeln query tilldelas en SQL sats med en parameter: query = "UPDATE employee set firstnme = 'SHILI' where empno =? ;"; Variabeln query kan sedan användas för att skapa en instans av klassen PreparedStatement, som placeras i variabeln stmt: stmt = con.preparestatement(query); Nu kan parametern bytas ut mot värdet i variabeln param1: Sidan 3 av 5

stmt.setstring(1, param1); setstring() metoden byter ut en parameter med en variabel av typ String. Den första parametern i metoden setstring() identifierar positionen av parametern i SQL satsen som ska bytas ut. Alltså, kommandot ovan byter ut den första parametern (första frågetecknet) mot variabeln param1. Då är det dags att exekvera SQL satsen. Det gör man med metoden executeupdate(): stmt.executeupdate(); Metoden executeupdate(), till skillnad från metoden executequery(), returnerar inte något resultat. Den kan användas för DDL satser och DML satser förutom SELECT satser. Båda metoder finns för både Statement och PreparedStatement. Skillnaden är att för Statement måste man ha en String variabel med SQL satsen som parameter. För PreparedStatement har man definierat SQL satsen innan man exekverar den. Man kan också använda PreparedStatement för SQL satser som inte har parametrar: stmt = con.preparestatement("rollback work;"); stmt.executeupdate(); Programmet JDBCAppa.java kan man kompilera med kommandot javac JDBCAppa.java och efteråt köra det med kommandot java JDBCAppa. Här är programmets resultat: Received results: empno= 000010 firstname= CHRISTINE empno= 000020 firstname= MICHAEL empno= 000030 firstname= SALLY empno= 000050 firstname= JOHN empno= 000060 firstname= IRVING empno= 000070 firstname= EVA empno= 000090 firstname= EILEEN empno= 000100 firstname= THEODORE empno= 000110 firstname= VINCENZO empno= 000120 firstname= SEAN empno= 000130 firstname= DOLORES empno= 000140 firstname= HEATHER empno= 000150 firstname= BRUCE empno= 000160 firstname= ELIZABETH empno= 000170 firstname= MASATOSHI empno= 000180 firstname= MARILYN empno= 000190 firstname= JAMES empno= 000200 firstname= DAVID empno= 000210 firstname= WILLIAM empno= 000220 firstname= JENNIFER Sidan 4 av 5

empno= 000230 empno= 000240 empno= 000250 empno= 000260 empno= 000270 empno= 000280 empno= 000290 empno= 000300 empno= 000310 empno= 000320 empno= 000330 empno= 000340 firstname= JAMES firstname= SALVATORE firstname= DANIEL firstname= SYBIL firstname= MARIA firstname= ETHEL firstname= JOHN firstname= PHILIP firstname= MAUDE firstname= RAMLAL firstname= WING firstname= JASON Retrieve the number of rows in employee table... There are 32 rows in employee table. Update the database... Retrieve the updated data from the database... empno= 000010 firstname= SHILI Rollback the update... Rollback done. Att skriva ett eget JDBC program! Det rekommenderade arbetssättet är att man skapar en katalog (till exempel NyJDBCProg) och kopierar dit programmet JDBCAppa.java som man sedan kan modifiera. Man kan även titta på gamla tentor och de lösningsförslag till dem om man vill se andra exempel eller hämta "inspiration" för att skriva ett eget program. Ytterligare information JDBC Tutorial: http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html Java Basics: http://java.sun.com/docs/books/tutorial/getstarted/cupojava/win32.html java.sql dokumentation: http://java.sun.com/products/jdk/1.1/docs/api/package-java.sql.html Sidan 5 av 5