java programozÁs
TRANSCRIPT
![Page 1: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/2.jpg)
Véletlen elérésű állományok2
![Page 3: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/4.jpg)
Osztályhierarchia4
![Page 5: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/9.jpg)
Feladat - Hőmérsékletek9
� Adatok bevitele:
![Page 10: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/10.jpg)
Feladat - Hőmérsékletek10
� Tetszőleges adat kinyerése:
![Page 11: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/11.jpg)
Feladat - AddressBook11
![Page 12: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/12.jpg)
Feladat - AddressBook12
![Page 13: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/13.jpg)
Feladat - AddressBook13
![Page 14: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/14.jpg)
Feladat - AddressBook14
![Page 15: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/15.jpg)
Feladat - AddressBook15
![Page 16: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/19.jpg)
A Scanner osztály19
� leggyakrabban a standard bemenetről való beolvasásra használjuk
� Példa:
![Page 20: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/20.jpg)
A Scanner osztály20
� leggyakrabban a standard bemenetről való beolvasásra használjuk
� Példa:
![Page 21: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/22.jpg)
Elválasztók (Delimiters)22
� Példa (folytatás):
� Kimenet:
![Page 23: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/23.jpg)
Formázott kiíratás – printf()23
![Page 24: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/24.jpg)
A java.util.Formatter osztály24
![Page 25: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/25.jpg)
String.format()25
![Page 26: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/26.jpg)
Adatbáziskezelés Jávában26
![Page 27: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/31.jpg)
JDBC architektúra31
![Page 32: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/32.jpg)
JDBC működési ciklusa32
![Page 33: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/39.jpg)
Példa39
![Page 40: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/40.jpg)
Példa40
![Page 41: JAVA PROGRAMOZÁS](https://reader033.vdocuments.mx/reader033/viewer/2022050717/588c6c371a28abb4218b7e5e/html5/thumbnails/41.jpg)
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.