java programozÁs

41
JAVA PROGRAMOZÁS 8.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda 8.ELŐADÁS Véletlen elérésű állományok; JDBC 2014-2015 tavasz

Upload: nguyentram

Post on 28-Jan-2017

251 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: JAVA PROGRAMOZÁS

JAVA PROGRAMOZÁS8.ELŐADÁS

Dr. Pál László, Sapientia EMTE, Csíkszereda

8.ELŐADÁS

Véletlen elérésű állományok; JDBC2014-2015 tavasz

Page 2: JAVA PROGRAMOZÁS

Véletlen elérésű állományok2

Page 3: JAVA PROGRAMOZÁS

A RandomAccessFile osztály3

� Közvetlen hozzáférésű állomány

� Írható és olvasható egyszerre

� Írás/olvasás egysége: bájt, primitív adat vagy String (tetszőleges objektum nem lehet!)String (tetszőleges objektum nem lehet!)

� Állománymutató (állománypozíció, file pointer)� Értéke: állomány elejétől számított bájtsorszám

� Lekérdezhető, beállítható

� Olvasó, író utasítások állítják

Page 4: JAVA PROGRAMOZÁS

Osztályhierarchia4

Page 5: JAVA PROGRAMOZÁS

Példa5

RandomAccessFile raf = newRandomAccessFile("adatok.dat","rw");raf.writeChars("ElejeX1908Vege");long hossz = raf.length(); // hossz==28raf.seek(10);char ch = raf.readChar(); // ch=='X'raf.writeChar(ch);long poz = raf.getFilePointer(); // poz==14

Page 6: JAVA PROGRAMOZÁS

A RandomAccessFile osztály6

� Konstruktorok� RandomAccessFile(String name, String mode)

throws FileNotFoundException� RandomAccessFile(File file, String mode)

throws FileNotFoundExceptionthrows FileNotFoundExceptionmode: "r" vagy "rw”

� Metódusok� long getFilePointer() throws IOException

void seek(long pos) throws IOExceptionint skipBytes(int n) throws IOException

� long length() throws IOExceptionvoid setLength(long newLength) throws IOException

Page 7: JAVA PROGRAMOZÁS

A RandomAccessFile osztály7

� Metódusok:� int read() throws IOException, EOFException

boolean readBoolean() throws IOException

� String readLine() throws IOException

� String readUTF() throws IOException

� void write(int b) throws IOExceptionvoid writeBoolean(boolean v) throws IOException

� void writeBytes(String s) throws IOException void writeChars(String s) throws IOException

� void writeUTF(String s) throws IOException

� void close() throws IOException

Page 8: JAVA PROGRAMOZÁS

Feladat - Hőmérsékletek8

� Feladat: � Adatok felvitele egy állományba

� Adatok ki listázása

� Átlag érték számítás� Átlag érték számítás

� Közbeeső érték kinyerése

Page 9: JAVA PROGRAMOZÁS

Feladat - Hőmérsékletek9

� Adatok bevitele:

Page 10: JAVA PROGRAMOZÁS

Feladat - Hőmérsékletek10

� Tetszőleges adat kinyerése:

Page 11: JAVA PROGRAMOZÁS

Feladat - AddressBook11

Page 12: JAVA PROGRAMOZÁS

Feladat - AddressBook12

Page 13: JAVA PROGRAMOZÁS

Feladat - AddressBook13

Page 14: JAVA PROGRAMOZÁS

Feladat - AddressBook14

Page 15: JAVA PROGRAMOZÁS

Feladat - AddressBook15

Page 16: JAVA PROGRAMOZÁS

A Scanner osztály16

� Szöveges adatok bevitelére használt osztály

� A bevitt szöveget átalakítja primitív adatokra vagy String-re

� A szöveget felosztja részszövegekre (token) � A szöveget felosztja részszövegekre (token) valamilyen minta alapján (alapértelmezetten: space, tab, enter)

� Átalakító függvények: � nextXxx() (nextInt(), nextByte(), nextFloat(), stb.)

� Next() – String beolvasása

� nextLine() – sor bevitele

Page 17: JAVA PROGRAMOZÁS

A Scanner osztály17

� Konstruktorok: paraméterként megadható egy bájt-alapú stream, egy fájl vagy egy sztring

Page 18: JAVA PROGRAMOZÁS

A Scanner osztály18

� Példák:� Standard bemenetkeyboard Scanner in1 = new Scanner(System.in);

int i = in1.nextInt();

� Fájl-bemenet� Fájl-bemenetScanner in2 = new Scanner(new File("in.txt"));

while (in2.hasNextDouble()) {

double d = in.nextDouble();}

� Sztring bemenetScanner in3 = new Scanner("This is the input text");

while (in3.hasNext()) { String s = in.next(); }

Page 19: JAVA PROGRAMOZÁS

A Scanner osztály19

� leggyakrabban a standard bemenetről való beolvasásra használjuk

� Példa:

Page 20: JAVA PROGRAMOZÁS

A Scanner osztály20

� leggyakrabban a standard bemenetről való beolvasásra használjuk

� Példa:

Page 21: JAVA PROGRAMOZÁS

Elválasztók (Delimiters)21

� Az alap fehér karakterek helyett lehet más elválasztót is beállítani, minták (pattern) segítségével

� Példa:

Page 22: JAVA PROGRAMOZÁS

Elválasztók (Delimiters)22

� Példa (folytatás):

� Kimenet:

Page 23: JAVA PROGRAMOZÁS

Formázott kiíratás – printf()23

Page 24: JAVA PROGRAMOZÁS

A java.util.Formatter osztály24

Page 25: JAVA PROGRAMOZÁS

String.format()25

Page 26: JAVA PROGRAMOZÁS

Adatbáziskezelés Jávában26

Page 27: JAVA PROGRAMOZÁS

JDBC27

� JDBC (Java Database Connectivity): programozói interfész (API), amely segítségével SQL parancsokat küldhetünk az adatbázisoknak és az adatbázis válaszait (eredménytáblák, visszatérési értékek, hibakódok, tárolt eljárások output paraméterei) hibakódok, tárolt eljárások output paraméterei) feldolgozhatjuk

� Az adatbázisok eléréséhez szükséges Java osztályok a java.sql csomagban találhatók

Page 28: JAVA PROGRAMOZÁS

JDBC API szolgáltatásai28

� Adatbázisok használatához az alábbi műveletekre van szükség:� Összeköttetés (connection) létesítése az adatbázissal

� SQL utasítások végrehajtása (Select, Insert, Update, � SQL utasítások végrehajtása (Select, Insert, Update, Delete, Call)

� Az adatbázis kezelő rendszer válaszainak feldolgozása (eredménytáblák, hibakódok, stb.)

Page 29: JAVA PROGRAMOZÁS

JDBC meghajtó-programok29

� A JDBC meghajtóprogramok feladata a JDBC API és a konkrét adatbáziskezelő rendszer illesztése

� Többféle megvalósítása van:� JDBC-ODBC áthidaló program + ODBC meghajtó-� JDBC-ODBC áthidaló program + ODBC meghajtó-

program

� JDBC – saját API áthidaló – meghajtó-program

� stb

Page 30: JAVA PROGRAMOZÁS

MySQL JDBC meghajtó30

� Letöltés: http://dev.mysql.com/downloads ⇒"MySQL Connectors" ⇒ "Connector/J" ⇒Connector/J 5.1.{xx} ⇒ select "Platform Independent" ⇒ ZIP Archive (e.g., "mysql-connector-java-5.1.{xx}.zip"

java-5.1.{xx}.zip"

� Kicsomagolás

� A "mysql-connector-java-5.1.{xx}-bin.jar” fájl másolása a JAVA_HOME könyvtárba (pld. "c:\program files\java\jdk1.8.0_{xx}\jre\lib\ext")

Page 31: JAVA PROGRAMOZÁS

JDBC architektúra31

Page 32: JAVA PROGRAMOZÁS

JDBC működési ciklusa32

Page 33: JAVA PROGRAMOZÁS

A meghajtó-programok kiválasztása33

� A meghajtóprogram kiválasztható:� Megnevezéssel

� Automatikusan a DriverManager osztály segítségével

� A DriverManager osztály nyilvántartja a � A DriverManager osztály nyilvántartja a használható meghajtóprogramokat, és az adatbázis összeköttetés létesítésekor kiválasztja a megfelelő meghajtót.

Page 34: JAVA PROGRAMOZÁS

A meghajtó-program betöltése34

� A meghajtó-program kiválasztható:� Megnevezéssel

� Automatikusan a DriverManager osztály segítségével

� A DriverManager osztály nyilvántartja a � A DriverManager osztály nyilvántartja a használható meghajtó-programokat, és az adatbázis összeköttetés létesítésekor kiválasztja a megfelelő meghajtót.

Page 35: JAVA PROGRAMOZÁS

A meghajtó-programok regisztrálása

35

� Két módszerrel lehetséges:� A meghajtó-program osztályának közvetlen

betöltésével (Cass.forName() statikus metósussal)

� A jdbc.drivers rendszerparaméter beállításával. A DriverManager osztály inicializálásakor a jdbc.driversrendszerparaméterben tárolt osztályok automatikusan betöltődnek

Page 36: JAVA PROGRAMOZÁS

Adatbázis URL-ek36

� Adatbázis-URL-ek szintaxisa a következő:� jdbc:alprotokoll:adatforrás, ahol

� a protokoll neve: jdbc

� az alprotokoll nevét a megfelelő meghajtó-program forgalmazója határozza meg, ezért rendszerint megegyezik a forgalmazó nevévelforgalmazó nevével

� az adatforrás leírása pedig a két adatbázis eléréséhezszükséges további adatokat (pl. adatbázis neve és a hálózatcíme, a felhasználó neve és jelszava) tartalmazza

� Példa:� jdbc:oracle:thin:@site:port:database

� jdbc:odbc:datasource;odbcoptions

� jdbc:mysql://localhost/database

Page 37: JAVA PROGRAMOZÁS

Adatbázis URL-ek37

� Az összeköttetés létrehozása� Connection DriverManager.getConnection(url, username,

password);

� Az összeköttetés lezárása� Az összeköttetés lezárása� A Connection objektum close() metódusával lehetséges

Page 38: JAVA PROGRAMOZÁS

SQL utasítások végrehajtása38

� Az SQL utasításokat az alábbi interfészek segítségével lehet kezelni� Statement: egyszerű utasítások végrehajtása

� PreparedStatement: bemenő paraméterekkel � PreparedStatement: bemenő paraméterekkel rendelkező utasítások végrehajtása

� CallableStatement: be/kimenő paraméterekkel rendelkező tárolt eljárások végrehajtása

Page 39: JAVA PROGRAMOZÁS

Példa39

Page 40: JAVA PROGRAMOZÁS

Példa40

Page 41: JAVA PROGRAMOZÁS

Könyvészet41

� Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II. (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt., Budapesta, 2002.

� Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.2011.