Database Systems II. ZH összefoglaló

Hasonló dokumentumok
SQL/PSM kurzorok rész


Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Adatbázisok webalkalmazásokban

Bevezetés: Relációs adatmodell

Kliens oldali SQL-API

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Java programozási nyelv 11. rész Adatbázis-programozás

SQL/PSM tárolt modulok rész

Tankönyv: SQL/PSM + Gyak:PL/SQL

Kalmár György Adatbázis alapú rendszerek

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

B I T M A N B I v: T M A N

PL/SQL (folytatás) Kurzorok, függvények, eljárások

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Haladó DBMS ismeretek 1

Összefoglaló. <variable_name> [IN OUT IN OUT] <data_type> [:=<default_value>] ... <label_name>: <statements>... GOTO <label_name>;...

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Tranzakciókezelés PL/SQL-ben

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 2. Előadás: Tárolt eljárások

JAVA PROGRAMOZÁS 8.ELŐADÁS

Adatbázis használata PHP-ből

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

MDAC - Microsoft Data Access Components

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

JDBC Adatbáziskapcsolat objektumok SQL parancsok küldése Kötegelt módosítások ResultSet Tranzakciók

Algoritmizálás + kódolás C++ nyelven és Pascalban

Adatbázis Rendszerek II. 4. Ea: MySQL Tárolt eljárások 110/1 B IT MAN

Java Programozás 10. Ea: JDBC. SQLite alapokon

Az SQL*Plus használata

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

B I T M A N B I v: T M A N

Együttes hozzárendelés

B I T M A N B I v: T M A N

Informatika terméktervezőknek

Algoritmizálás és adatmodellezés tanítása 1. előadás

Java II. I A Java programozási nyelv alapelemei

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Programozási technológia

Java Database Connectivity (JDBC)

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 3. Előadás: Tárolt eljárások (folytatás) Nézetek

Adatbázis-kezelés ODBC driverrel

Adatbázis kezelés Delphiben. SQL lekérdezések

Java II. I A Java programozási nyelv alapelemei

PL/SQL blokk. [címke] [DECLARE deklarációs utasítás(ok)] BEGIN végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Java és web programozás

SZAKDOLGOZAT. Szabó Attila

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Témák. JDBC Adatbázisok JDBC használatának lépései Tranzakciók Adatbázis tervezés EK diagram

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Adatbázisok kliens-szerver arhitektúrája. Copyright, 1996 Dale Carnegie & Associates, Inc.

Adatbázisban tárolt kollekciók

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Adatbázis Rendszerek II. 2. Gyakorló környezet

Hozzunk ki többet abból amink van. Fehér Lajos

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

JavaServer Pages (JSP) (folytatás)

Adatbázis Rendszerek II. 4. PLSQL Kurzorok, hibakezelés 53/1B IT MAN

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A 1-1

A modell-ellenőrzés gyakorlata UPPAAL

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Pénzügyi algoritmusok

Apple Swift kurzus 3. gyakorlat

Kapcsolat objektumok. Válasz feldolgozása Tranzakciók DAO tervezési minta

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

B I T M A N B I v: T M A N

SQL OO elemei aktív komponensek

SQL DDL-2 (aktív elemek) triggerek

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

B IT MAN 43/1 B IT MAN. Adatbázis Rendszerek II. Ellenőrző kérdések JDBC. v:

B I T M A N B I v: T M A N

Szoftvertechnológia alapjai Java előadások

BASH script programozás II. Vezérlési szerkezetek

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

AWK programozás, minták, vezérlési szerkezetek

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Kivételkezelés 2. SQLCODE lehetséges értékei:

Operációs Rendszerek II. labor. 2. alkalom

OOP #14 (referencia-elv)

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Internet programozása. 3. előadás

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

1. Alapok. #!/bin/bash

Adatbázis-kezelés ODBC-vel

Programozás alapjai. 5. előadás

Átírás:

Database Systems II. ZH összefoglaló 1) Kód az adatbázisban tárolva PSM CREATE PROCEDURE name(parameters) local declarations body PL/SQL CREATE (OR REPLACE) PROCEDURE name(parameters) local declarations body. run CREATE FUNCTION name(parameters) RETURNS type Paraméterek: (IN a CHAR(20), OUT b REAL, INOUT c INT) Paraméterek: (a IN CHAR(20), b OUT REAL, c IN OUT INT) Függvényhívás: CALL name(parameters); Lokális deklarációk: DECLARE name type; Lokális deklarációk: name type; Blokkok: BEGIN END; Visszatérési érték beállítása: RETURN value; Hozzárendelés: SET variable = expression; Hozzárendelés: variable := expression; Hivatkozás egy mező típusára: R.x%TYPE Tuple, ami a tábla típusait veszi fel: R%ROWTYPE IF condition THEN ELSEIF condition THEN ELSE END IF; loopname: LOOP LEAVE loopname; IF condition THEN ELSIF condition THEN ELSE END IF; <<loopname>> LOOP EXIT WHEN condition; CONTINUE WHEN condition;

WHILE condition DO END WHILE; REPEAT UNTIL condition END REPEAT; 1) Közvetlen értékadás (csak 1 érték) SET p = SELECT 2) SELECT INTO (csak 1 érték) SELECT INTO p 3) Kurzor DECLARE c CURSOR FOR query; OPEN c; FETCH FROM c INTO x1,,xn; CLOSE c; Kurzor végigjárása DECLARE NotFound CONDITION FOR SQLSTATE 02000 ; menuloop: LOOP FETCH FROM c INTO x1,,xn; IF NotFound THEN LEAVE menuloop END IF; 3) Kurzor CURSOR name IS query; OPEN c; FETCH c INTO x1,,xn; CLOSE c; Kurzor végigjárása LOOP FETCH c INTO x1,,xn; EXIT WHEN c%notfound; Tuple x R%ROWTYPE; x.attrname For ciklus FOR tmp_var IN (SELECT CURSOR) LOOP END LOOP SET SERVEROUTPUT ON; DBMS_OUTPUT.PUT_LINE(toWrite); 2) Embedded SQL A preprocessor átalakítja az SQL parancsokat függvényhívásokká. Kapcsolódás SQL szerverhez EXEC SQL CONNECT :user IDENTIFIED BY :password Deklarációs rész EXEC SQL BEGIN DECLARE SECTION; hosttype1 hostname1; hosttypen hostnamen; EXEC SQL END DECLARE SECTION;

Ha MODE=ORACLE, akkor itt nem kell a host változókat deklarálni. Ha CODE=CPP, akkor kötelező a DECLARE SECTION. A megosztott változók elé kettőspontot kell tenni. A gazdanyelvben a megosztott változók hagyományos változókként működnek. VARCHAR VARCHAR username[20]; struct { unsigned short len; unsigned char arr[20]; } username; EXEC SQL WHENEVER SQLERROR DO Kurzor A kurzor deklarációja a deklarációs részen kívülre kerül. EXEC SQL DECLARE c CURSOR FOR statement; Kurzor végigjárása: EXEC SQL OPEN CURSOR c; while ( 1 ) { EXEC SQL FETCH c INTO :var1,,:varn; if ( NOT FOUND ) {break;} } EXEC SQL CLOSE CURSOR c; SQLSTATE változó MODE=ANSI szükséges. char SQLSTATE[6]; SQL Communication Area MODE=ORACLE szükséges. Minden kifejezés visszatér egy státuszkóddal, amit az SQLCA sqlcode mezőjébe tesz. #include <sqlca.h> WHENEVER EXEC SQL WHENEVER condition action; ahol condition lehet SQLWARNING, SQLERROR, NOT FOUND és action lehet CONTINUE, DO, DO BREAK, DO CONTINUE, GOTO <label>, STOP Indikátor változók NULL értéket rendelnek bemeneti változókhoz, illetve észlelik a NULL értékeket. 2 bájtos integer (azaz short) lehet. :host_variable:indicator_variable 0 Sikeres volt a művelet. -1 NULL lett visszaadva, beillesztve vagy frissítve. -2 A karakter típusú gazdaváltozóba tett érték csonkolva lett, az eredeti hossz ismeretlen. >0 A karakter típusú gazdaváltozóba tett érték csonkolva lett, az értéke az eredeti hossz.

Dinamikus SQL Előkészítés (statement akár változó is lehet!): EXEC SQL PREPARE query_name FROM statement; Futtatás: EXEC SQL EXECUTE query_name; Összevonva: EXEC SQL EXECUTE IMMEDIATE statement; 3) JDBC ODBC (Open Database Connectivity) JDBC (Java Database Connectivity) 4 rész: Alkalmazás (indítja és leállítja a kapcsolatokat, SQL kéréseket küld) Driver manager (betölti a JDBC drivert) Driver (kapcsolódik az adatbázishoz, kéréseket küld, válaszokat és hibakódokat fogad) Adatforrás (feldolgozza az SQL utasításokat) 4-féle driver létezik: Híd Nem natív API-ba fordítja az SQL parancsokat, pl. JDBC-ODBC híd. Mind a JDBC, mind az ODBC drivernek jelen kell lennie mindkét oldalon. Közvetlen fordítás natív API-ba nem Java driverrel Az adatforrás natív API-jába fordít. OS-specifikus binary kell a klienseknél. Hálózati híd Egy közbülső szervernek küldi át a parancsokat, és ez a szerver kommunikál az adatforrással. Kicsi JDBC driver kell a klienseknél. Közvetlen fordítás natív API-ba Java driverrel A JDBC kéréseket közvetlenül a DBMS által használt hálózati protokollba fordítja. DBMS-specifikus Java driver kell a klienseknél. import java.sql.*; OracleDataSource ods = new OracleDataSource(); ods.seturl( jdbc:oracle:thin:username/password@//host:port/service ); ods.setuser(user); ods.setpassword(password); Connection mycon = ods.getconnection(); 3 kifejezésosztály: Statement: SQL kifejezést fogad és futtat. Statement stat1 = mycon.createstatement(); PreparedStatement: paraméteres SQL kifejezést fogad és futtat. PreparedStatement stat2 = mycon.preparestatement(statement); A statementben a paramétereket?-ek helyettesítik. CallableStatement: futásra kész, tárolt függvényt/eljárást futtat. CallableStatement stat3 = mycon.preparecall( {? = call name(?,?)} );

Kifejezések végrehajtása: stat1.executeupdate(statement); stat2.clearparameters(); stat2.setint(numberof?,value); int numrows = stat2.executeupdate(); Autocommit Automatikusan be van kapcsolva, kikapcsolható a con.setautocommit(boolean b) függvénnyel. Kikapcsolt állapotban tranzakció alkalmazása a conn.commit(), visszavonása a conn.rollback() függvénnyel. ResultSet ResultSet rs = stat2.executequery(); A ResultSet úgy viselkedik, mint egy kurzor. Továbblépés a következő sorra: rs.next(); Sor elemének lekérdezése: rs.gettypename(numberof? fieldname) CallableStatement Az IN paraméterek a stat3.settypename(value) metódussal állíthatók be. Az OUT paraméterek beállítása: stat3.registeroutparameter(numofoutparameter,types.sqltype); A kifejezés a stat3.execute() függvénnyel futtatható. A visszaadott értékeket a stat3.gettypename() függvénnyel lehet kiolvasni. Bővített ResultSet-ek forward-only/read-only forward-only/updatable scroll-sensitive/read-only scroll-sensitive/updatable scroll-insensitive/read-only scroll-insensitive/updatable Statament createstatement(int resultsettype,int resultsetconcurrency) PreparedStatement preparestatement (String sql,int resultsettype,int resultsetconcurrency) CallableStatement preparecall (String sql,int resultsettype,int resultsetconcurrency) resultsettype: TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE resultsetconcurrency: CONCUR_READ_ONLY, CONCUR_UPDATABLE Kurzorként viselkednek, minden metódusuk SQLExceptiont dob hiba esetén: void beforefirst() void afterlast() boolean first() boolean last() boolean absolute(int row)

boolean relative(int row) int getrow() boolean next() boolean previous() ResultSet frissítése Az rs.updatetypename(numof? fieldname,newvalue) függvény megváltoztatja a sor egy mezőjének tartalmát. A változtatás az rs.updaterow() függvénnyel hajtható végre, a rs.cancelrowupdates() függvénnyel vonható vissza. További függvények: void movetoinsertrow() a legutóbb beillesztett sorra állítja a kurzort insertrow() movetocurrentrow() deleterow() Készítette: Ecker Gábor Database Systems II. 2010/2011/1. félév