180 likes | 339 Views
Adatbázisok gyakorlat. 2. gyakorlat. MySQL elérése számítógépen (JDBC, ODBC, PHP). Kötelező program. moodle (teszt, kérdések, válaszlehetőségek, válaszok) családfa (személyek, kapcsolatok, események, házasságok) csapatsportok (csapatok, versenyzők, mérkőzések, pontszerzők/góllövők)
E N D
Adatbázisok gyakorlat 2. gyakorlat MySQL elérése számítógépen (JDBC, ODBC, PHP)
Kötelező program • moodle (teszt, kérdések, válaszlehetőségek, válaszok) • családfa (személyek, kapcsolatok, események, házasságok) • csapatsportok (csapatok, versenyzők, mérkőzések, pontszerzők/góllövők) • egyéni sportok (bajnokságok, versenyzők, résztvevők, mérkőzések) • imdb (filmek, színészek, szereplések, filmstúdiók) • műsorújság (tv csatornák, műsorok, szereplők, időpontok) • publikációk (közlemények, szerzők, folyóiratok, kiadók) • etr (oktatók, kurzusok, termek, hallgatók) • bugzilla (hibajelentések, fejlesztők, szerepkörök, javítások) • szavazatszámláló (szavazások/fordulók, jelöltek, szavazók, szavazatok) • vállalat (részlegek, osztályok, dolgozók, fizetések) • raktár (áruk, készlet, mozgások) • könyvtár (olvasók, könyvek, kiadók, szerzők) • órarend (osztályok, tantárgyak, termek, órarend) • munkahely (helyiségek, számítógépek, telefonok, dolgozók) • városi tömegközlekedés (buszjáratok, megállók, menetrend) • pizzéria (pizzák, ügyfelek, rendelések, feltétek) • bank (folyószámlák, ügyfelek, átutalások) • ingatlan (telkek, épületek, tulajdonosok) • busz, vasút, repülő helyfoglalás (járatok, városok, ügyfelek, foglalás) • gyakorlatvezetővel előre egyeztetett saját téma Antal Gábor
Kötelező program • Egy feladatot legfeljebb két hallgató választhat. A felsorolt fogalmakat mindenképpen be kell építeni a programba, de nem táblákat jelölnek. • Az alkalmazás értékelése: • Alapkövetelmények: 8-10 pont • További pontok adhatók az alábbiakra (témánként 1-2 pont, kivételes esetben 3 pont): • Négynél több tábla • Nagyobb mennyiségű, feltöltött valós adat • Nemtriviális (nem szokványos) alkalmazás • Diagramok, képek használata • Jelentések (formázott listák) készítése • JDBC vagy ODBC (és egyéb, PHP-n kívüli eszköz) • Plusz pontok csak az alapkövetelmények teljesítése esetén adhatók. • A dokumentáció értékelése: • Alapkövetelmények: 2-3 pont. • Összesen további max. 4 pont adható az alábbiakra: • Az E-K modell nemtriviális és hibátlan: 1-2 pont • A relációs modell nemtriviális és hibátlan: 1-2 pont • A dokumentáció külalakja: 1 pont • A dokumentáció terjedelemben lényegesen meghaladja a minimális követelményeket: 1 pont Antal Gábor
MySQL (mint DBMS) • Ingyenes adatbáziskezelő ( DBMS = Database Management System) rendszer • Egyik legnépszerűbb (nagyon kicsi adatbázisokhoz Access, nagyokhoz Oracle, minden másra jó a MySQL) • Rendkívül támogatott, minden platformról elérhető • Többfelhasználós • Relációs alapelvekre épül • JDBC, ODBC, PHP driver is elérhető hozzá • Az ehhez tartozó „nyelvjárást” fogjuk használni (ám az itt megtanultak közül nem minden működik pl. Oracle-ben) • Adminisztrációhoz: mysql, mysqladmin, vagy pedig a webes phpMyAdmin • A kabinetben is elérhető Antal Gábor
JDBC (Java Database Connectivity API) • Java alkalmazásprogramozási interfész (API) • Csomagba van rendezve, melyet importálni kell minden fájlba, ahol használjuk (import java(x).sql.* ) • A programhoz csatolni kell a kapcsolódást szolgáló drivert. (Nem csak MySQL-hez kapcsolódhatunk a segítségével) Antal Gábor
JDBC • Megfelelő driver regisztrálása • Kapcsolat létrehozása DriverManager segítségével • Átadjuk az utasításokat, melyeket az adatbázis végre tud hajtani (vagy nem) • Mivel nem biztos sem a kapcsolat, sem az utasítás lefutásának sikeressége, ezért mindig try-catch blokkot kell használni Antal Gábor
JDBC működése Antal Gábor
JDBC Példakód try { Statement stmt=null; //Utasítás ResultSet rs=null; //Eredmény tárolása Class.forName("com.mysql.jdbc.Driver"); //Driver regisztrálása String url = "jdbc:mysql://localhost:3306/test"; //Egyszerű String Connection con = DriverManager.getConnection(url, "nev", "jelszo"); //Kapcsolat létrehozása stmt = con.createStatement(); //Inicializálás stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery("SELECT * from adatb"); //Lekérés végrehajtása //Eredményt visszaadó utasításnál System.out.println("Eredmeny:"); //Nincs pontosvessző!! while(rs.next()){ String szoveg = rs.getString("text"); //Az eredményből kikérjük a text System.out.println("text mezo tartalma: " + szoveg); // értékét } con.close(); //Kapcsolat lezárása FONTOS!! }catch( Exception e ) { //Hibakezelés FONTOS!! } Antal Gábor
ODBC (Open Database Connectivity) • Microsoft fejlesztette ki • Számos adatbáziskezelővel képes kapcsolatot teremteni, C környezetből • Megfelelő header fájlokat includeolni kell, utána használható adatstruktúrák: • Environment (Környezet): Kliens hozza létre, a kapcsolat előkészítéséhez • Connection (Kapcsolat): Adatbázishoz való kapcsolat leírására szolgál. Több is lehet egy környezetben • Statement (Utasítás): SQL-utasítás leírására szolgál. Minden ODBC-utasítás valamely kapcsolathoz tartozik. Egy ODBC-utasítás különböző SQL utasításokat tartalmazhat. • Ezek kezelése handle-k segítségével történik (adatstruktúrára mutató pointer). Típusai: • SQLHENV, SQLHDBC, SQLHSTMT Antal Gábor
PHP • A PHP (PHP: Hypertext Preprocessor) egy objektumorientált programozási nyelv, főbb felhaszálása: dinamikus weboldalak létrehozása • A PHP kód egy webszerveren fut, ahol a PHP-értelmező értelmezi (futtatja a parancsokat, lekéréseket), és ezek eredményét HTML-szövegként küldi ki a kliens böngésző felé. • <?php és ?> közé kell írni a PHP-kódokat. • Ezeken kívüli kódokat automatikusan HTML-ként értelmezi a böngésző • A PHP és HTML részek szabadon váltakozhatnak, többször is. Antal Gábor
PHP Alapok • Változók deklarálása: $valt = 231.1; • Típusuk dinamikus, kiírni semmilyen esetben nem kell, a PHP tudja $valt = ‘RED’; • Kiíratás: echo $valt; • Parancsokat pontosvessző választja el • Összefűzés: echo ”Taylor Swift legújabb albuma a ” . $valt . ”címet viseli”; • Tömbök lehetnek egyszerű, valamint asszociatív tömbök Antal Gábor
PHP Alapok • Egyszerű tömb felsorolással: (Kezdőszám: 0) • $eloadok = array(”Taylor Swift”, ”KORN”, ”Nine Inch Nails”); //$eloadok[2] = ”Nine Inch Nails” • Egyszerű tömb elemenként megadva: • $eloadok[0] = ”Taylor Swift”; $eloadok[1] = ”KORN”; • Asszociatív tömb felsorolással: • $albumok = array(”elso” => ”Taylor Swift”, ”masodik” => ”Fearless” ); • Asszociatív tömb elemenként megadva: • $albumok[”elso”] = ”Taylor Swift”; $albumok[”legujabb”] = ”RED”; Parancs: echo ”Taylor Swift legújabb albuma a ”. $albumok[”legujabb”]; Eredmény: Taylor Swift legújabb albuma a RED címet viseli Antal Gábor
PHP • Egyszerű feltételes szerkezet: • Diszkrét ismétléses szerkezet: (Tömb minden elemére végrehajtódik) if(feltétel) { parancs } elseif(feltétel2) { parancs2 } else { parancs3 } Eredmény: Jó album a Taylor Swift Jó album a Fearless Jó album a RED foreach ($albumok as $lemezcim) { echo ”Jó album a”. $lemezcim; } Antal Gábor
PHP Osztályon belül ugyanúgy láthatóságot kell adni az osztályváltozóknak, függvényeknek, akárcsak Javaban. Hasonlóan, függvényen belül $this->counter-rel lehet hivatkozni az aktuális objektum attribútumaira. Ugyanígy, az osztály nevével jelzett publikus függvény lesz az osztály konstruktora. (Újabb PHP verziókban pedig a __construct függvényt kell megvalósítani ehhez.) • Osztály: • Függvény: class ElsoOsztaly{ public $counter=0; public function fgv() { } } function invertalas( $ezt ){ return -1*$ezt; } Antal Gábor
PHP Példakód <?php $link = mysql_connect('localhost', 'user', 'pass'); //Kapcsolódjon a szerverhez if (!$link) { die('Nem sikerult: ' . mysql_error()); //Ha nem sikerül, hibaüzenet } mysql_select_db($adatbazis, $link); //Válasszunk ki egy adatbázist $utasitas = "SELECT * FROM adatb"; //Hozzunk létre egy utasítást $result=mysql_query($utasitas, $link); //Amelyet futtatunk while($sor = mysql_fetch_assoc($result) ){ //Amíg van sora echo $sor["integer"]. $sor["text"]. $sor["char"] ."<br>"; //Írjuk ki } mysql_close($link); //Miután végeztünk az adatbáziskapcsolattal, //minden esetben zárjuk le. FONTOS!! ?> Antal Gábor
XAMPP • Az elnevezése egy betűszó, mégpedig • X (=platformfüggetlen [Windows, Linux, Mac]) • Apache webszerver • MySQL (Adatbázis) • PHP • Perl • További előnye, hogy egyszerű kezelőfelületről vezérelhető, konfigurálható • Otthoni telepítés ajánlott (segítség CooSpace-en) Antal Gábor
Megjegyzések • Adatbázisok. Előadás jegyzet, • www.inf.u-szeged.hu/~katona, • pub/Adatbázisok/ • Cser Lajos diái alapján • Németh Gábor példakódjai • XAMPP telepítési segédlet: • CooSpace • http://www.houg.hu/oraclejunior Antal Gábor
Megjegyzések • MySQL Driverek: • http://www.mysql.com/products/connector/ • Tutorialok rekordok aktualizálására: • http://www.mkyong.com/jdbc/jdbc-preparestatement-example-update-a-record/ • http://www.tutorialspoint.com/mysql/mysql-update-query.htm • Teljes, ingyenes PHP-MySQL videóanyag példákkal: • http://thenewboston.org/list.php?cat=11 • http://thenewboston.org/list.php?cat=49 Antal Gábor