From 3ffc0b25ebbeed9f99ec3a72453af8d5789d9ed1 Mon Sep 17 00:00:00 2001 From: "Richard O. Legendi" Date: Thu, 12 Apr 2012 10:03:15 +0200 Subject: [PATCH] =?UTF-8?q?Form=C3=A1z=C3=A1sok=20=C3=A9s=20=C3=BAj=20JDBC?= =?UTF-8?q?=20feladat.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 11-reflection/11-reflection.md | 24 +++++------ 17-jdbc/17-jdbc.md | 77 +++++++++++++++++++++++----------- 2 files changed, 64 insertions(+), 37 deletions(-) diff --git a/11-reflection/11-reflection.md b/11-reflection/11-reflection.md index 6c3f872..4a5be46 100644 --- a/11-reflection/11-reflection.md +++ b/11-reflection/11-reflection.md @@ -29,27 +29,27 @@ Objektumreferencia megszerzése: * Objektumtól lekérdezhető: -``` java -Class clazz = this.getClass(); -``` + ``` java + Class clazz = this.getClass(); + ``` * Osztálytól lekérdezhető: -``` java -Class intClazz = int.class; -``` + ``` java + Class intClazz = int.class; + ``` * Közvetlenül név szerint lekérdezhető: -``` java -Class clazz = Class.forName("java.lang.Boolean"); -``` + ``` java + Class clazz = Class.forName("java.lang.Boolean"); + ``` * Új osztály létrehozása: -``` java -Proxy.getProxyClass(clazz.getClassLoader(), clazz.getInterfaces()); -``` + ``` java + Proxy.getProxyClass(clazz.getClassLoader(), clazz.getInterfaces()); + ``` ## Példa ## ``` java diff --git a/17-jdbc/17-jdbc.md b/17-jdbc/17-jdbc.md index 65ca9cf..8c6f2d6 100644 --- a/17-jdbc/17-jdbc.md +++ b/17-jdbc/17-jdbc.md @@ -132,38 +132,38 @@ Három lehetőség: áttekinthetőség érdekében a `String` literál lezáró `"` jeleket és a konkatenációt elhagytam): -``` java -String strCreateTable = "CREATE TABLE inventory - ( - id INT PRIMARY KEY, - product VARCHAR(50), - quantity INT, - price DECIMAL - )"; - -statement = dbConnection.createStatement(); -statement.execute(strCreateTable); -``` + ``` java + String strCreateTable = "CREATE TABLE inventory + ( + id INT PRIMARY KEY, + product VARCHAR(50), + quantity INT, + price DECIMAL + )"; + + statement = dbConnection.createStatement(); + statement.execute(strCreateTable); + ``` * `executeQuery(String)`: lekérdezéshez, az eredmény egy `ResultSet` objektum lesz. %Mindig olvassátok végig az eredményt, mert addig nem záródik. Pl.: -``` java -ResultSet rs = statement.executeQuery("SELECT * FROM inventory"); -while (rs.next()) { - String p = rs.getString("product"); - int q = rs.getInt("quantity"); - double d = rs.getDouble("price"); - ... -} -``` + ``` java + ResultSet rs = statement.executeQuery("SELECT * FROM inventory"); + while (rs.next()) { + String p = rs.getString("product"); + int q = rs.getInt("quantity"); + double d = rs.getDouble("price"); + ... + } + ``` * `executeUpdate(String)`: insert, update, delete, és adatdefiníciós utasításokhoz, az eredmény a módosított sorok száma (vagy 0). Pl.: -``` java -statement.executeUpdate("DELETE WHERE id=0"); -``` + ``` java + statement.executeUpdate("DELETE WHERE id=0"); + ``` ## Kötegelt végrehajtás ## Van rá lehetőség, hogy parancsokat összefogjunk, és egyszerre küldjünk el a @@ -188,7 +188,7 @@ változtattak a DB-ben (itt `[0, 1, 1, 1, ...]` lesz). > * > * -## Feladat ## +## Grafikus Kliens ## Készítsetek egy egyszerű adatbázis kezelő grafikus felületet, amely az alábbi ábrán látható! A program tartalmazzon egy `JTextField` komponenst, ahol a lekérdezést lehet megadni, egy `JTextArea` komponenst, ahol megjeleníti az @@ -210,3 +210,30 @@ utasítást. metódussal írjátok ki. Ehhez tudnotok kell, hogy hány oszlop található az eredményben, ezt a `ResultSet#getMetaData()` függvényen keresztül elért objektumtól tudjátok lekérdezni. + +## Névjegyzék ## + +Készítsetek egy szerveralkalmazást, amely adatbázisban képes tárolni elérhetőségeket! + +A következő adatok szükségesek egy bejegyzéshez: + +* Név +* Becenév (opcionális) +* Telefonszám +* E-mail cím +* Cím +* Születésnap +* Kép (URL) + +A szerverhez kliensek csatlakoznak (egyelőre egyszerre egy), és képesek ezeket az adatokat létrehozni, lekérdezni, frissíteni és törölni (CRUD). A kliens elég, ha egyszerű konzolos felülettel rendelkezik. + +A feladatot vagy RMI, vagy saját protokoll implementálásával socketeken keresztül oldhatod meg. + +### Továbbfejlesztési lehetőségek ### + +* Feltesszük, hogy egy személynek egyszerre csak egy elérhetősége van. Készíts egy másik táblát, ami a névhez különböző elérhetőségeket rendel! +* Készítsd fel az alkalmazást tranzakciókezelésre! +* Egyszerre akár több kliens is használhassa párhuzamosan a szervert! +* A kliens képes legyen egy egyszerű CSV (*Coma Separated Values*) fájlból adatokat beolvasni, és azokat egyszerre továbbítva tárolni a szerverben. +* A kliens legyen képes egy egyszerű HTML formátumű listát generálni a szerveren tárolt azonosítókból. +