Adatbázis használat a webszervernél

Slides:



Advertisements
Hasonló előadás
Számítógépes adatbázis-kezelés
Advertisements

Tananyag: konzultáció
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Adatbázis alapú rendszerek
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
megismerése, mintaadatbázis létrehozása
1 Fejlett Programozási Technikák 2. 15/7. Fejlett Programozási Technológiák 2. 2 Az előző előadás tartalma: JFC és Swing  Múlt  Felépítés  Java Bean.
Fejlett Programozási Technológiák II. Világos Zsolt 7. gyakorlat.
Készítette: Sárközi Anikó
A Java programozási nyelvSoós Sándor 1/20 Java programozási nyelv 11. rész – Adatbázis-programozás Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
Osztott alkalmazások kezelése. VIR elosztott architektúra indítékai: - meglévő komponensek integrációja - WEB / Internet elterjedése (nemzetköziség) -
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
6. előadás: PHP-MySQL Barabás Péter
PHP Webprogramozás alapjai
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Szombathely Dinamikus WEB programozás: PHP és JSP.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
WEB MES (webes gyártásirányító rendszer)
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Az SQL nyelv alapjai.
Java – adatbázisok elérése
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Adatbázis adminisztrátori ismeretek
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis-kezelés SQL-lel
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Fejlesztés PHP-NUKE portál rendszerre Horváth Zoltán Második Magyarországi PHP Konferencia március 27. Copyright PHP Konferencia,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Készítette: Lipp Marcell
APEX BMF, II. félév.
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
Java programozási nyelv Filekezelés
Java programozási nyelv Adatbekérés konzolról
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
A gyakorlatok munkakörnyezete
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
Adatbázis-kezelés Tarcsi Ádám január. 15. MySQL és PHP.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Adatbázis rendszerek II
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
Számítógépes adatbázis-kezelés
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Palotás Ádám és Fodor Gergely Oracle Data Integrator Bemutató és gyakorlat
Excel programozás (makró)
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Programozás III JPA.
Készítette: Kiss András
Miskolci Egyetem Alkalmazott Informatikai Tanszék 2007
JDBC.
Alkalmazásfejlesztés gyakorlat
Alkalmazott Informatikai Tanszék
Excel programozás (makró)
Kovács Gergely Péter Bevezetés
Hálózatkezelés Java-ban
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Adatbázis használat a webszervernél

Web és adatbázis Webhez kell adatbázis általában relációs adatbázis SQL interface használata fontos a hatékonyság Web saját maga is használ adatbázist alkalmazásszerver a bean-ek tárolására session-változók tárolására

Két szervertípus - két használat 1. generációs szerver cgi-bin scripteket használ, PERL nyelven nincs vagy nehézkes állapotprogramozás üzleti logika és oldalgenerálás összekeverve 2. generációs web alkalmazás szerveres megoldás, Java-ban könnyű állapotprogramozás változatos kapcsolat az adatbázishoz szétválasztva az üzleti logika és a megjelenítés (pl. JSP)

Hagyományos web

Cgi-bin megoldás PERL nyelvű programozás általános DB/SQL modul használata konkrét adatbázishoz konkrét meghajtó könnyű kezelhetőség kapcsolat megnyitás utasítás megnyitás utasítás előkészület utasítás végrehajtás eredmények felhasználása utasítás lezárás kapcsolat lezárása

Előkészületek Adatbázis meghajtók beintegrálása DBI modul használata Adatbázis kapcsolat létrehozása #!/usr/bin/perl use DBI; require("../cgi-lib.pl"); my $dbase = ’dbstudent'; ... my $dbh = DBI->connect("DBI:mysql:$dbase", $user, $pwd) or die ”Nem lehet kapcsolódni: $DBI::errstr\n";

Utasításkészítés SQL utasításokat adatként konkrétan leírni paraméterek helyét ki lehet jelölni ?-lel my $sql = "select nev, beonev, tit, t20.reszlnev, t21.reszlnev from bekiat as t1, rszl as t20, rszl as t21, dolgozo, munkakor where erv = '1' AND t1.ig = ? AND t1.ig = t20.reszl AND t1.fooszt = t21.reszl AND t1.tsz = dolgozo.tsz AND t1.beo = munkakor.beo nev LIKE ? order by nev, t20.reszlnev";

A végrehajtás előkészítése Kiválasztunk egy előkészített utasítás létrehozunk egy “DBI-utasítást” my $sql = "select nev, beonev, tit, t20.reszlnev, t21.reszlnev ...; my $dbh = DBI->connect("DBI:mysql:$dbase", $user, $pwd) or die ”Nem megy a CONNECT statement: $DBI::errstr\n"; my $sth = $dbh->prepare($sql[0]) or die ”A SELECT nem megy: $dbh->errstr\n”;

Utasítás végrehajtás Konkrét paraméterek előállítása paraméterek behelyettesítése my $sql = "select nev, beonev, tit, t20.reszlnev, t21.reszlnev ...; my $dbh = ...; my $sth = $dbh->prepare($sql[0]) or die ”Az elökészítés nem megy: $dbh->errstr\n”; $sth->execute($ig, $kereso) or die ”Nem fut le a SELECT: $sth->errstr";

Eredmények kezelése Egy tábla-rekord adódik át egyszerre sorrend a SELECT-ben definiált $sth->execute($ig, $kereso) or die ”Nem fut le a SELECT: $sth->errstr"; while(@row = $sth->fetchrow_array) { print "<tr>"; print "<td bgcolor=white><i><b>$row[2] $row[0]</b></i></td>"; print "<td bgcolor=white>$row[1]</td><td bgcolor=white> $row[3], $row[4]</td></tr>\n"; }

Befejezés Két fázis utasítás lezárása kapcsolat lezárása $sth->execute($ig, $kereso) or die ”Nem fut le a SELECT: $sth->errstr"; while(@row = $sth->fetchrow_array) { ... } $sth->finish; $dbh->disconnect;

Java nyelvű alkalmazások

Adatbázis kapcsolatok Egyedi „connector” technológia IBM-IMS-hez (hierarchikus adatbázis) LotusNotes adatbázis: RDBMS módosítva Általános SQL adatbázisokhoz általános és rendszerfüggetlen

SQL adatbázis kapcsolatok Alsó szintű interface közvetlen kapcsolat: JDBC Magas interface szint adatbázis tábla és mezőszerkezet átírása Java objektumokba „mapper” program SQL-t nem is kell/lehet használni automatikus generálás off-line használat alsó szintű interface hívása

JDBC Java DataBase Connectivity 1996-ban 1.0 verzió, 1999-ben 2.0 verzió Sun/JavaSoft találmánya kiindulás az ODBC-ből CLI - X/Open Call Level Interface megvalósítva: MS-ODBC C nyelvű API nemcsak adatbázishoz: pl. Excel-hez

JDBC architektúra JDBC-API meghajtó (azaz adatbázis) független adatbázis függőség a meghajtó behívásánál legalsó szinten konkrét “driver” pl. Oracle-driver, Sybase-driver több is működhet egyszerre használat is egyértelműen leírva java.sql csomagban

JDBC meghajtók közvetlen meghajtó JDBC-ODBC bridge hálózati meghajtó távoli JDBC ODBC RDBMS RDBMS RDBMS

JDBC felhasználás az alkalmazás- szerverben Összetett példa R M I J D B C R M I J D B C O D B C JDBC --- ODBC bridge JDBC felhasználás az alkalmazás- szerverben Excel tábla Internet Excel-szerver alkalmazás szerver

Kezelési szerkezet try { // meghajtó betöltés // kapcsolat az adatbázishoz // utasítás létrehozása // eredmény létrehozása // eredmény elemzése } catch (SQLException e) { // kivételes esetek } finally { // utasítás bezárása // kapcsolat bezárása }

SQL és Java típusok Egyértelmű összerendelés mindegyikhez get/set-hozzáférés SQL tipus Java tipus metódus neve VARCHAR String getString setString NUMERIC BigDecimal getBigDecimal setBigDecimal INTEGER int getInt setInt BIGINT long getLong setLong REAL float getFloat setFloat DATE java.sql.Date getDate setDate TIMESTAMP java.sql.TimeStamp getTimeStamp setTimeStamp

Előkészületek Meghajtó betöltése Kapcsolat kapcsolati URL kapcsolat létrehozása Class.forName (“com.sybase.jdbc.SybDriver”); jdbc:<alprotokoll>:<alnév>:<gép>:<port>:<adatbázis> String dbnm = “jdbc:sybase:Tds:dbmachine:5001:dbstudent”; Connection con = DriverManager.getConnection (dbnm, “uname”, “passwd”);

Akciók az adatbázisban Keresés executeQuery paramétere a SELECT utasítás Módosítás executeUpdate UPDATE és INSERT utasításokhoz Egyebek execute COMMIT, ROLLBACK kiadására

Keresés és eredménye Keresés Eredmény Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery ( “select * from table1 where field1 like ‘e%’”); while (rs.next()) { System.out.println( rs.getString(1) + rs.getFloat(2)); } // while

Keresési formák Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery ( “select * from table1 where field1 like ‘e%’”); String namestart = i.getItem(); ResultSet rs = stmt.executeQuery ( “select * from table1 where field1 like ‘“ + namestart + “%’”); PreparedStatement pstmt = con.preparedStatement( “select * from table1 where field1 like ? AND num = ?”); pstmt.setString (1, i.getItem()+”%”); pstmt.setInt (2, 2002); ResultSet rs = stmt.executeQuery ();

Eredmények kezelése Ciklusban történik a kiírás egyes mezőkről tudni kell a típusát getXXX() interface (getInt, getByte, …) SQL-null és a Java-null nem azonos! mező sorszám while (rs.next() ){ if (!rs.wasNull()) { System.out.println(rs.getInt(2)); System.out.println(rs.getInt(“num”)); } else { ... } } mezőnév

Egyszerű példa import java.sql.*: public class SimpleJDBC { public static main (String args[]) { try { Class.forName (“com.sybase.jdbc.SybDriver”); String dbid = “jdbc:sybase:Tds:dbmachine:5001:dbstudent”; Connection con = DriverManager.getConnenction (dbid, “uname”, “passwd”); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery ( “select * from table1 where field1 like ‘e%’”); while (rs.next()) { System.out.println(rs.getString(1) + rs.getFloat(2)); } // while } cactch (Exception e) { } } }

EJB Enterprise Java Beans SQL- és JDBC-kódírás nélkül táblakezelés + tranzakciókezelés + perzisztencia + párhumazos hozzáférés + pool-ozás megoldása EJB-API meghatározza a formát EJB konténer biztosítja a futási környzetet

Middleware JDBC hívás alacsony szintűnek minősül Logikai interface eltakarja a JDBC-t általános interface-t ad Ezt a middleware-t kell a servlet-nek, webservice-nek, stb. használni!