java programozÁs
TRANSCRIPT
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
Véletlen elérésű állományok2
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
Osztályhierarchia4
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
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
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
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
Feladat - Hőmérsékletek9
� Adatok bevitele:
Feladat - Hőmérsékletek10
� Tetszőleges adat kinyerése:
Feladat - AddressBook11
Feladat - AddressBook12
Feladat - AddressBook13
Feladat - AddressBook14
Feladat - AddressBook15
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
A Scanner osztály17
� Konstruktorok: paraméterként megadható egy bájt-alapú stream, egy fájl vagy egy sztring
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(); }
A Scanner osztály19
� leggyakrabban a standard bemenetről való beolvasásra használjuk
� Példa:
A Scanner osztály20
� leggyakrabban a standard bemenetről való beolvasásra használjuk
� Példa:
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:
Elválasztók (Delimiters)22
� Példa (folytatás):
� Kimenet:
Formázott kiíratás – printf()23
A java.util.Formatter osztály24
String.format()25
Adatbáziskezelés Jávában26
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
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.)
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
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")
JDBC architektúra31
JDBC működési ciklusa32
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.
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.
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
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
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
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
Példa39
Példa40
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.