Tvorba informačních systémů

Podobné dokumenty
Tvorba informačních systémů

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Datová vrstva informačního systému. Miroslav Beneš

Datová vrstva informačního systému. Java Database Connectivity JDBC. Obsah přednášky JDBC. Datová vrstva informačního systému

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Tvorba informačních systémů

4. lekce Přístup k databázi z vyššího programovacího jazyka

Použití databází na Webu

Tvorba informačních systémů

TÉMATICKÝ OKRUH TZD, DIS a TIS

Databázové a informační systémy

Úvod do Javy, JDBC a multimediální databáze

Michal Krátký, Miroslav Beneš

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Jazyk C# - přístup k datům

Programování v jazyku C# II. 5.kapitola

Úvod do Javy, JDBC a multimediální databáze

Databáze II. 1. přednáška. Helena Palovská

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Jazyk C# - přístup k datům

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Komponenty v.net. Obsah přednášky

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

O Apache Derby detailněji. Hynek Mlnařík

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Tvorba informačních systémů

Java a Caché IV: Manipulace s objekty

Text úlohy. Systémový katalog (DICTIONARY):

Databázové a informační systémy Jana Šarmanová

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Michal Krátký, Miroslav Beneš

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Architektury informačních systémů

Architektury informačních systémů

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Databázové systémy a SQL

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Databázové systémy úvod

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

C Přístup k databázím z WWW

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

RMI - Distribuované objekty v Javě

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Zápisování dat do databáze

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Nové jazykové brány do Caché. Daniel Kutáč

Databázové systémy. Cvičení 6: SQL

Tvorba informačních systémů

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Vytváření a použití knihoven tříd

UJO Framework. revoluční architektura beans. verze

Java Database Connectivity with JDBC

Prostorové a XML databáze

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Přizpůsobení JSTL pro Google App Engine Datastore

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Semestrální práce z DAS2 a WWW

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

8.2 Používání a tvorba databází

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Tvorba informačních systémů

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

FIREBIRD relační databázový systém. Tomáš Svoboda

Úvod do programovacích jazyků (Java)

Sada 1 - PHP. 14. Úvod do jazyka SQL

Optimalizace dotazů a databázové transakce v Oracle

Stěhování aplikací. Michal Tomek, Sales Manager

Oracle XML DB. Tomáš Nykodým

Databázové systémy I. 1. přednáška

Seznámení s knihovnou ADO.NET

InterSystems Caché Post-Relational Database

Transkript:

Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/39

Obsah Datová vrstva informačních systémů,, ADO.NET. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 2/39

Datová vrstva Datová vrstva informačních systémů Oddělení aplikace od přístupu do databáze. Standardizovaný dotazovací jazyk - SQL. Standardizované rozhraní v programovacím jazyce - ODBC, JDBC, ADO.NET,.... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 3/39

Standard pro přístup do databáze. SQL Access group, 1992. Umožňuje dotazovat data z libovolné aplikace bez ohledu v jaké databázi jsou uložena. Vložena mezivrstva - ovladač, překládající uživatelské dotazy na dotazy databáze. Správce ovladačů Driver Manager. ODBC-compliant. Od verze 2.0 je podporováno SQL. Standardy: X/Open a ISO: SQL Call Level Interface (SQL/CLI). c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 4/39

Architektura ODBC c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 5/39

Typy ovladačů Datová vrstva informačních systémů Ovladače založené na souborech přímý přístup k datům (ovladače = zdroj dat), analýza a interpretace dotazů, dbase. Ovladače založené na SŘBD dotazy se předávají ke zpracování SŘBD, transformace ODBC SQL na konkrétní dialekt SQL. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 6/39

Postup Datová vrstva informačních systémů 1 Připojení k datovému zdroji. 2 Inicializace. 3 Vytvoření a provedení dotazu. 4 Získání výsledku. 5 Ukončení transakce. 6 Odpojení od datového zdroje. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 7/39

Připojení k datovému zdroji / / Alokace zastupce pro spravce ovladacu ODBC SQLHENV henv ; SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, & henv ) ; / / Deklarace pozadovane verze ODBC SQLSetEnvAttr ( henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER ) SQL_OV_ODBC3, 0 ) ; / / Alokace zastupce pro databazove p r i p o j e n i SQLHDBC hdbc1 ; SQLAllocHandle (SQL_HANDLE_DBC, henv, & hdbc ) ; / / P r i p o j e n i k databazi, zdroj, u z i v a t e l, heslo SQLConnect ( hdbc, database, SQL_NTS, user, SQL_NTS, password, SQL_NTS ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 8/39

Inicializace aplikace / / Z i s k a n i i n f o r m a c i o SRBD, ovladaci,... SQLCHAR dbms_name [ 4 0 ] ; SQLGetInfo ( hdbc, SQL_DBMS_NAME, dbms_name, sizeof (dbms_name ), NULL ) ; / / Alokace zastupce pro p r i k a z ( dotaz ) SQLHANDLE hstmt ; SQLAllocHandle (SQL_HANDLE_STMT, hdbc, & hstmt ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 9/39

Vytvoření a provedení dotazu Přímé provedení dotazu SQLCHARquery [ ] = "INSERT INTO... " ; SQLExecDirect ( hstmt, query, SQL_NTS ) ; Přpravený dotaz SQLCHAR query = "SELECT jmeno FROM uziv WHERE l o g i n =? " ; SQLPrepare ( hstmt, query, SQL_NTS ) ; SQLBindParameter ( hstmt, 1,... ) ; SQLExecute ( hstmt ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 10/39

Získání výsledku Datová vrstva informačních systémů / / Svazani promennych s vysledkem dotazu SQLCHAR jmeno [ 3 0 ] ; SQLINTEGER jmeno_ind ; SQLBindCol ( hstmt, 1, SQL_C_CHAR, jmeno, sizeof ( jmeno ), & jmeno_ind ) ; / / Cteni vysledku while ( SQLFetch ( hstmt )! = SQL_NO_DATA ) { i f ( jmeno_ind! = SQL_NULL_DATA ) cout < < jmeno ; } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 11/39

Odpojení od zdroje dat / / Uvolneni zastupce prikazu SQLFreeHandle (SQL_HANDLE_STMT, hstmt ) ; / / Odpojeni od databaze SQLDisconnect ( hdbc ) ; / / Uvolneni zastupce prikazu SQLFreeHandle (SQL_HANDLE_DBC, hdbc ) ; / / Uvolneni zastupce p r o s t r e d i SQLFreeHandle (SQL_HANDLE_ENV, henv ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 12/39

Rozhraní pro unifikovaný přístup k datům. Použití i mimo klient-server SŘBD data ve formě tabulek (CSV, XLS,...) Ovladače jsou k dispozici pro většinu databázových systémů. Inspirováno rozhraním ODBC Objektové rozhraní. Možnost spolupráce s ODBC. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 13/39

Architektura JDBC c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 14/39

Architektura JDBC c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 15/39

JDBC ovladač Datová vrstva informačních systémů Zprostředkování komunikace aplikace s konkrétním typem databáze. Implementován obvykle výrobcem databáze. Dotazovací jazyk SQL předá se databázi, ovladač vyhodnotí přímo. Reprezentován specifickou třidou: sun.jdbc.odbc.jdbcodbcdriver, com.mysql.jdbc.driver. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 16/39

Typy JDBC ovladač Typ 1: využívá ODBC (přes JDBC-ODBC bridge), obtížně konfigurovatelné. Typ 2: komunikace s nativním ovladačem. Typ 3: komunikuje s centrálním serverem (Network Server) sít ovým protokolem, pro rozsáhlé heterogenní systémy. Typ 4: založen čistě na jazyce Java, přímý přístup do databáze. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 17/39

Registrace ovladače Konkretní ovladač je pevně spojen s aplikací new com.mysql.jdbc.driver() Výběr ovladače za běhu aplikace S t r i n g drivername = "com. mysql. jdbc. D r i v e r " ; t r y { Class. forname ( drivername ) ; } catch ( ClassNotFoundExceptione ) { / / obsluha vyjimky } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 18/39

Identifikace spojení jdbc:driver:database jdbc:odbc:datasource;attr=value;... Příklad: jdbc:mysql://localhost/tis?user=tis &password=tis &useunicode=true &characterencoding=iso-8859-2 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 19/39

Připojení k databázi Connection con = DriverManager.getConnection( url_string, user_string, password_string ); 1 DriverManager se dotáže všech registrovaných ovladačů. 2 Rozpozná-li ovladač své url, vrátí objekt Connection. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 20/39

Objekt Statement Reprezentuje SQL příkaz: Statement PreparedStatement CallableStatement Vytvoření instance příkazu: Statement stmt= con.createstatement(); Provedení příkazu: ResultSet rs= stmt.executequery( "SELECT * FROM t"); int num = stmt.executeupdate( "DELETE * FROM t"); c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 21/39

Objekt ResultSet Reprezentuje výsledek dotazu SELECT: Statement stmt = con. createstatement ( ) ; ResultSet rs = stmt. executequery ( "SELECT FROM u z i v a t e l " ) ; while ( rs. next ( ) ) { S t r i n g l o g i n = rs. g e t S t r i n g ( " l o g i n " ) ; S t r i n g jmeno = rs. g e t S t r i n g ( " jmeno " ) ; } rs. close ( ) ; stmt. close ( ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 22/39

Ošetření chyb Datová vrstva informačních systémů public class SQLException extends Exception t r y {... } catch ( SQLException e ) { while ( e! = null ) { System. out. p r i n t l n ( e. getmessage ( ) ) ; System. out. p r i n t l n ( e. getsqlstate ( ) ) ; System. out. p r i n t l n ( e. geterrorcode ( ) ) ; e = e. getnextexception ( ) ; } } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 23/39

Parametrizované příkazy Možnost předkompilace opakované provedení příkazu. Parametry označené znakem?, indexované od 1, INSERT INTO u z i v a t e l ( l o g i n, jmeno ) VALUES(?,? ) c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 24/39

Parametrizované příkazy PreparedStatement pstmt = con. preparestatement ( "INSERT... VALUES(?,? ) " ) ; pstmt. clearparameters ( ) ; pstmt. s e t S t r i n g ( 1, " wal007 " ) ; pstmt. s e t N u l l ( 2, Types.VARCHAR) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 25/39

Transakce Datová vrstva informačních systémů t r y { con. setautocommit ( false ) ; stmt. executeupdate (... ) ;... con. commit ( ) ; } catch ( SQLExceptione ) { con. r o l l b a c k ( ) ; } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 26/39

Příklad, Oracle 1/2 DriverManager. r e g i s t e r D r i v e r (new OracleDriver ( ) ) ; S t r i n g connstr = " jdbc : o r a c l e : t h i n : @infra. cs. vsb. cz " + " :1521: d456 " ; Connection connection = DriverManager. getconnection ( connstr, " xxx ", " yyy " ) ; Statement statement = connection. createstatement ( ) ; boolean r e s u l t f = statement. execute ( "UPDATE PROBE_SET VALUE=1 WHERE ID = 2 " ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 27/39

Příklad, Oracle 2/2 ResultSet r e s u l t S e t = null ; i f ( r e s u l t f ) { r e s u l t S e t = statement. getresultset ( ) ; } i n t updatecount = statement. getupdatecount ( ) ; statement. close ( ) ; connection. close ( ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 28/39

Příklad - JSTL Datová vrstva informačních systémů < s q l : setdatasource var= " datasource " d r i v e r = " org. g j t.mm. mysql. d r i v e r " u r l = " jdbc : mysql : / / l o c a l h o s t / db " user= " guest " password= " guest " / > < s q l : query datasource= " $ { datasource } "... / > c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 29/39

ADO.NET Datová vrstva informačních systémů Přístup k datům na platformě.net. Možnost práce s XML daty. Propojení na další komponenty.net. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 30/39

Architektura ADO.NET Komponenty zaměřené na obsah DataSet DataTable, DataRow, DataColumn DataRelation Komponenty pro správu Connection Command DataReader DataAdapter c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 31/39

Architektura ADO.NET c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 32/39

Komponenty ADO.NET DataReader rychlý přístup k datům, pouze čtení směrem vpřed. DataSet obsahuje kopii dat z datového zdroje, čtení a zápis dat a schématu ve formátu XML. DataAdapter abstrakce přípojení a příkazu, naplnění a synchronizace dat pro DataSet. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 33/39

Příklad, Oracle 1/3 using System. Data ; using System. Data. O r a c l e C l i e n t ;... OracleConnection connection = new OracleConnection ( " Data Source= i n f o ; User ID=xxx ; Password=yyy " ) ; connection. Open ( ) ; OracleCommand command = new OracleCommand ( s e l e c t from student, connection ) ; OracleDataAdapter dbadapter = new OracleDataAdapter ( command ) ; DataSet dataset = new DataSet ( " student " ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 34/39

Příklad, Oracle 2/3 t r y { dbadapter. F i l l ( dataset ) ; } catch ( Exception exc ) { throw new Exception ( exc. Message ) ; }.... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 35/39

Příklad, Oracle 3/3.... / / draw the r e s u l t System. Windows. Forms. DataGrid studentdatagrid= new System. Windows. Forms. DataGrid ( ) ; studentdatagrid. DataSource = dataset ; studentdatagrid. Update ( ) ;... connection. Close ( ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 36/39

Vazba ASP.NET na data <%@ Import Namespace= " System. Data. Odbc"%> <formrunat=" server " > <asp : L i s t B o x i d = " ListBox1 " runat=" server " Width= " 355px " Height= " 180px " DataTextField=" nazev " DataValueField= " i d " / > < / form> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 37/39

Vazba ASP.NET na data void Page_Load ( Objectsender, EventArgse ) { i f (! IsPostBack ) { OdbcDataAdapter da = new OdbcDataAdapter ( "SELECT id, nazev FROM katedry ", "DSN=KatIS " ) ; System. Data. DataSet ds = newsystem. Data. DataSet ( ) ; } } da. F i l l ( ds, " Katedra " ) ; ListBox1. DataSource = ds. Tables [ " Katedra " ]. DefaultView ; ListBox1. DataBind ( ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 38/39

Reference Datová vrstva informačních systémů ODBC http://www.microsoft.com/data/odbc/ http://www.unixodbc.org/ JDBC http://java.sun.com/products/jdbc ADO.NET http://www.msdn.com/ c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 39/39