adatbázisok gyakorlat

18
1 Szegedi Tudományegyetem Természettudományi és Infor matikai Kar Antal Gábor Adatbázisok gyakorlat 2. gyakorlat MySQL elérése számítógépen (JDBC, ODBC, PHP)

Upload: awena

Post on 25-Jan-2016

41 views

Category:

Documents


1 download

DESCRIPTION

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) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Adatbázisok gyakorlat

1Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor

Adatbázisok gyakorlat

2. gyakorlat

MySQL elérése számítógépen (JDBC, ODBC, PHP)

Page 2: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 2Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 2Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor

Kötelező program1. moodle (teszt, kérdések, válaszlehetőségek, válaszok) 2. családfa (személyek, kapcsolatok, események, házasságok) 3. csapatsportok (csapatok, versenyzők, mérkőzések, pontszerzők/góllövők) 4. egyéni sportok (bajnokságok, versenyzők, résztvevők, mérkőzések) 5. imdb (filmek, színészek, szereplések, filmstúdiók) 6. műsorújság (tv csatornák, műsorok, szereplők, időpontok) 7. publikációk (közlemények, szerzők, folyóiratok, kiadók) 8. etr (oktatók, kurzusok, termek, hallgatók) 9. bugzilla (hibajelentések, fejlesztők, szerepkörök, javítások) 10. szavazatszámláló (szavazások/fordulók, jelöltek, szavazók, szavazatok) 11. vállalat (részlegek, osztályok, dolgozók, fizetések) 12. raktár (áruk, készlet, mozgások) 13. könyvtár (olvasók, könyvek, kiadók, szerzők) 14. órarend (osztályok, tantárgyak, termek, órarend) 15. munkahely (helyiségek, számítógépek, telefonok, dolgozók) 16. városi tömegközlekedés (buszjáratok, megállók, menetrend) 17. pizzéria (pizzák, ügyfelek, rendelések, feltétek) 18. bank (folyószámlák, ügyfelek, átutalások) 19. ingatlan (telkek, épületek, tulajdonosok) 20. busz, vasút, repülő helyfoglalás (járatok, városok, ügyfelek, foglalás) 21. gyakorlatvezetővel előre egyeztetett saját téma

Page 3: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 3Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 3Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 4: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 4Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 4Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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ő

Page 5: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 5Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 5Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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)

Page 6: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 6Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 6Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 7: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 7Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 7Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor

JDBC működése

Page 8: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 8Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 8Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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!! }

Page 9: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 9Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 9Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 10: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 10Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 10Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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.

Page 11: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 11Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 11Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 12: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 12Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 12Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 13: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 13Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 13Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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 }

foreach ($albumok as $lemezcim) {

echo ”Jó album a”. $lemezcim;

}

Eredmény: Jó album a Taylor SwiftJó album a FearlessJó album a RED

Page 14: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 14Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 14Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor

PHP

• Osztály:

• Függvény:

class ElsoOsztaly{

public $counter=0;

public function fgv() { }

}

function invertalas( $ezt ){

return -1*$ezt;

}

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.)

Page 15: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 15Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 15Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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 soraecho $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!!

?>

Page 16: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 16Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 16Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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)

Page 17: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 17Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 17Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

Page 18: Adatbázisok gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 18Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Antal Gábor 18Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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