210 likes | 301 Views
Számítógépes adatbázis-kezelés. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC. Adatbázisok. Adatbázis = adott formátum és rendszer szerint tárolt adatok összessége . DBMS feladatai : adatstruktúra (adatbázisséma) definiálása,
E N D
Számítógépesadatbázis-kezelés A MySQL adatbáziskezelő A PHP programozásinyelv JDBC, ODBC
Adatbázisok • Adatbázis = adottformátumésrendszerszerinttároltadatokösszessége. • DBMS feladatai: • adatstruktúra (adatbázisséma) definiálása, • adatok aktualizálása (új felvétel, törlés, módosítás), • lekérdezési lehetőségek, • fejlesztő környezet biztosítása célalkalmazások létrehozásához. • Relációs modell (1970): az adatok kétdimenziós táblázatokban tárolódnak
Mysql • MySQL: népszerű, ingyenesadatbáziskezelőrendszer (“DBMS”). • A későbbiekben (PHP, JDBC, ODBC) arralátunkmajdpéldákat, hogylehetkapcsolódnihozzá • Többfelhasználós, relációsalapelvekreépül • Akurzuskereteinbelül a hozzátartozó SQL nyelvjárástfogjukhasználni • sajnosnéhányígymegtanultdolognem fog működni pl. Oracle használatakor • Adminisztrációjáhozparancssorieszközök (mysql, mysqladmin) vagy a phpMyAdminrendszerhasználatos • Akabinetben is elérhető
XAMPP • PHP+MySQLalapúoldalakfejlesztéséhezkiválórendszer • platformfüggetlen, Windows, Linux, Mac OS X alattegyaránthasználható • tartalma: • Apache HTTP szerver • MySQL, phpMyAdmin • PHP interpreter • (Perl támogatás) • Könnyenhasználhatóvezérlőpult • Telepítéséselindításután a böngészőben a http://localhostcímenelérhetőleszaz{xampp}/htdocskönyvtár • A nyitólapotebbe a könyvtárbahelyezzük el index.phpnéven Otthontelepíteni! [4]
PHP alapok • Objektumorientált (vagyinkábbtöbbparadigmájú) programozásinyelv • Lényegiműködése: a kliensoldalrólbejövőadatokatfogad, ésazokismeretébena szervervégrehajtjaa programunkat, “legyárt” egyweblapot, ami a felhasználónakmegjelenik • .phpkiterjesztésselmentsük el a programjainkat • ezenfájlokbantetszőlegesmennyiségű HTML kódothelyezhetünk el, valamintspeciálishatárolók (<?phpés ?>) közt a programot (sőtezektöbbszörváltakozhatnak is) <!DOCTYPE html> <meta charset=utf-8> <title>PHP Test</title> <?php echo 'HelloWorld'; ?> ezitt a PHP-kód, az echo parancskiíregyszöveget
PHP / Adatszerkezetek, vezérlés asszociatívtömb: kulcs-értékpárok megadásával • a változóktípusaivalnemnagyonkelltörődnünk $valtozo = ‘Egyszoveg’; $masik = 421; $tomb = array(‘Suzuki’, ‘Fiat’, ‘Volvo’); $atomb = array(‘zero’ => ‘nulla’, ‘one’ => ‘egy’, ‘two’ => ‘kettő’); echo ‘Two is called ’ . $atomb[‘two’] . ‘ in Hungarian’; • Feltételesvezérlésiszerkezet: if (feltétel1) { … } [elseif (feltétel2) {…} else { …}] • Diszkrétismétlés (“mindenelemrehajtsdvégre”): foreach ($tomb as $auto) { echo $auto; } sztring konkatenáció
PHP / függvények, osztályok • Függvény: function osszeado($a, $b) { return $a+$b; } • Osztály: class MintaOsztaly { public $var = ’kezdőérték’; public function ertekKiir() { echo $this->var; } } A class kulcsszóvaldefiniáljukazosztályt. A tagváltozóknakadunkláthatóságot, pl. itt a $varváltozópublikus. Ha egytagváltozórahivatkozunkmetódusokban, kiírjukazaktuálisobjektumpéldánytjelentő$this-t a változóneveelé.
Webesűrlaplétrehozása A feladatlétrehozniegyolyanűrlapot, amelyentalálhatóegyszövegbevitelimezőa felhasználónevénekbekérésére, ésegy “Küldés” feliratúgomb. A bevittadatotjuttassuk el a szervernek, és ha a név “Cser Lajos”, jelenítsünk meg egyoldalt “Demonstrátor” szöveggel, egyébkéntpedig “SziaXY” legyen a válasz!
tesztoldal.php POST HTTP eljárással azudvozol.php-nak elküldjükazűrlapon bevittadatokat. Számostovábbivezérlő létrehozható (pl. rádiógombok, jelölő- négyzetekstb.)
Udvozol.php Ezenazoldalonmár PHP kód is van. Azűrlapadatait a beépített $_POST tömbtartalmazza.
Feladat Készítsünk PHP nyelven mini angol-magyarszótárat: a felhasználómegadhategyszót, és ha az benne van a szótárunkban, kiírjuka magyarmegfelelőjét, ha nincs benne, a “nincstalálat” szövegjelenjen meg! szotar.php
KapcsolódásMysql-hezphp-ban (Egyegyszerűmegközelítés) • Kapcsolatnyitása $kapcsolat = mysql_connect("localhost", $user, $pwd); • Ellenőrizzük, van-e kapcsolat if (!$kapcsolat) { die ("Nem lehet csatlakozni a MySQL kiszolgalohoz!"); } • Ellenőrizzük, ki lehet-e választani a szükséges adatbázist, ha nem, hozzuk létre azt if (!(mysql_select_db($adatbazis, $kapcsolat)) ) { mysql_query("CREATE DATABASE ..."); mysql_select_db($adatbazis, $kapcsolat); } • Adjunk meg SQL nyelven megfogalmazott utasításokat mysql_query($utasitas, $kapcsolat); ! A gyakorlatiéletbennemszoktukezeketa függvényeketalkalmazásainkkifejlesztéséhezhasználni, helyetteszámos API, keretrendszerállrendelkezésre, amivelhatékonyabbésbiztonságosabberedménytkaphatunk. Jelenkurzuskereteinbelülviszontmegelégszünkezzel a megoldással is.
JDBC (Java database connectivity) • alkalmazásprogramozásiinterfész (API) Java nyelvenkészülőprogramokhoz • java.sqlcsomagtartalmazza a vonatkozóosztályokat – eztimportálnikell a programunkban • Működésielv: • a programunkban a JDBC-nekadunkátutasításokat • A DriverManagernevűösszetevőkezeliazegyestípusúadatbázisokhozvalókapcsolódástbiztosítóillesztőprogramokat • A kapcsolatlétrehozásaelőtt a megfelelődrivertregisztráljuk • A kérésünkeljut a megfelelőadatbázishoz, ésvégrehajtódik
JDBC / Kapcsolódás MySQL-hez utasítás import java.sql.*; public class Jdbc { public static void main(String args[]){ try { Statement stmt; ResultSet rs; Class.forName("com.mysql.jdbc.Driver"); // driver regisztralasa MySQL-hez. String url = "jdbc:mysql://localhost:3306/test"; Connection con = DriverManager.getConnection(url, ”usr", ”pass"); eredményektárolására a Java-nakalapjábanvévenemrésze a MySQL driver, aztelőször magunknakkellbeszerezni [1] [2]
JDBC / Lekérdezés stmt = con.createStatement(); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery("SELECT * from proba"); // irassuk ki az eredmenyeket System.out.println("Display all results:"); while(rs.next()){ String id = rs.getString("id"); String vnev = rs.getString("Vezeteknev"); String knev = rs.getString("Keresztnev"); System.out.println(id + " | " + vnev + " | "+ knev); } egyExecuteQuery() függvényhívással adjuk meg, mi legyenazutasítás, a végénnincspontosvessző. (Eredményt visszaadóutasításokhoz) addigigaz, amíg van felnemdolgozott eredmény a válaszban, ésilyenkor egyből a következőre is lép
JDBC / Kapcsolatlezárása // zarjuk a kapcsolatot con.close(); // hiba eseten irassuk ki a stack-et (az egesz program egy try blokkban // volt) }catch( Exception e ) { e.printStackTrace(); } } }
ODBC (Open database connectivity) • A JDBC-hezhasonlóanszámosadatbáziskezelővelképeskapcsolatotlétesíteni, de nem Java környezetből, hanem C-ből. • A megfelelő header fájlok include-olásautánazalábbiadatstruktúrákkaldolgozhatunk: • Környezet (Environment): a kliens hozza létre a DBMS-sel való kapcsolat előkészítéséhez. • Kapcsolat (Connection): DBMS-sel való kapcsolat leírására szolgál. Egy környezethez több kapcsolat tartozhat. • ODBC-utasítás (Statement). Egy SQL utasítás leírására szolgál. Minden ODBC-utasítás valamely kapcsolathoz tartozik. Ugyanaz az ODBC-utasítás különböző időpontokban különböző SQL-utasításokat tartalmazhat. • A fentiek kezelése handle-k (az adatstruktúrára mutató pointerek) segítségével történik. • Ezek típusai sorrendben SQLHENV, SQLHDBC, SQLHSTMT. [3]
Megjegyzések • [1] A MySQL-hezszükséges JDBC driver beszerezhetőitt: http://dev.mysql.com/downloads/connector/j/ • [2] NémethGáborpéldáinyomán • [3] Forrás: dr. KatonaEndre: Adatbázisok http://www.inf.u-szeged.hu/~katona/db-ea1.pdf • [4] Az XAMPP letölthető a következőcímről: http://www.apachefriends.org/en/xampp.html