2011 Politecnico di Torino 1

Documenti analoghi
2011 Politecnico di Torino 1

2011 Politecnico di Torino 1

SQL per le applicazioni D B M G

SQL per le applicazioni D B M G

SQL per le applicazioni. Basi di dati. Elena Baralis. Pag Politecnico di Torino 1 D B M G2 D B M G4 D B M G5 D B M G6. SQL per le applicazioni

Connessione con MySQL

La connessione ai database MySQL tramite script PHP versione 5.5

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Elena Baralis 2007 Politecnico di Torino 1

Linguaggio SQL: costrutti avanzati

Connessione con MySQL

JDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

bool mysql_select_db([string database_name [,resource link_identifier]]) Connessione ad un server MySQL vuole conettere

Laboratorio di Progettazione Web

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Lezione 9. Applicazioni tradizionali

PHP e MySQL. Scripting server-side per accesso a DB MySQL

PHP ESSENTIALS #10. By WI400 Team. : database e sql

Esercitazione 10 SQL: transazioni

Linguaggio SQL: costrutti avanzati

PHP 5. PHP ed i database. Database e tabelle. Struttura di un DB relazionale. Accesso a database

2011 Politecnico di Torino 1

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Basi di Dati Architetture Client/Server

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O / Servlet: interazione con un DBMS

PHP 5. Accesso a database

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Lavorare con MySQL Parte Seconda.

Tecnologie di Sviluppo per il Web

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

PHP & MySQL. Giselda De Vita

Prefazione. Parte Prima Basi di dati relazionali: modello e linguaggi 15

PHP - MYSQL Ing. Bruno Di Caprio

MySQL. Esercizio 1. Soluzione

Linguaggio SQL: costrutti avanzati D B M G

Tecnologie di Sviluppo per il Web

D B M G Il linguaggio HTML

PHP e MySQL. Guida scaricata da

Perchè un database? Perchè un database? Tipi di DataBase. Scegliere un database. ! Sicurezza. ! Evitare la ridondanza. ! Architettura multilivello

Architetture Client/Server e World Wide Web

Laboratorio di Basi di Dati

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Elena Baralis 2007 Politecnico di Torino 1

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS

MY SQL Guida MySQL di base

INVIO TELEMATICO ENTRATEL

Modulo o Form in Html

MySQL Migration Toolkit

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Interazione 1 linguaggio PHP con DB MySQL

Basi di dati Modelli e linguaggi di interrogazione

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

@2011 Politecnico di Torino 1

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.2 Strumenti di Access. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

JDBC versione base. Le classi/interfacce principali di JDBC

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

APPUNTI DI PHP : V INFORMATICA SEZIONE G

Elena Baralis 2007 Politecnico di Torino 1

2011 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015

Concetti base programmazione. Antonio Gallo

Programma Master Programmatore Java

MySQL Server e Workbench.

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti

LABORATORIO DI INFORMATICA. Prof.ssa Patrizia Tarantino

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Appalto concorso sistema GAWS

Open Database Connectivity (ODBC)

Laboratorio Progettazione Web Modello di applicazione Web

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Il Web come Interfaccia Utente di un Sistema Informativo

Laboratorio Progettazione Web Le funzioni in PHP. Andrea Marchetti IIT-CNR 2016/2017

Programmazione Web D B M G. Il linguaggio HTML

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1

PHP i5 #3. By SIRI. : accesso adl DB2 IBMi

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Programmazione Web D B M G. Il linguaggio PHP

Come trattare il risultato di un comando SQL (relazioni) che

Elena Baralis 2007 Politecnico di Torino 1

Architettura di Reti

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 5

Adeguamento template fatture elettroniche per dispositivi medici

Transcript:

Modalità d uso SQL per le applicazioni Indipendentemente dalla soluzione CLI adottata, esiste una strutturazione comune dell interazione con il DBMS apertura della connessione con il DBMS esecuzione di istruzioni i i SQL chiusura della connessione 4 Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface le istruzioni i i SQL sono passate come parametri alle funzioni del linguaggio ospite non esiste il concetto di precompilatore Il programma ospite contiene direttamente le chiamate alle funzioni messe a disposizione dall API 2 5 Call Level Interface Esistono diverse soluzioni di tipo Call Level Interface (CLI) standard SQL/CLI ODBC (Open DataBase Connectivity) soluzione proprietaria i Microsoft di SQL/CLI JDBC (Java Database Connectivity) soluzione per il mondo Java OLE DB ADO ADO.NET 3 6 2011 Politecnico di Torino 1

3. Ricezione di un risultato in risposta all istruzione inviata nel caso di SELECT, di un insieme di tuple 7 ODBC (Open DataBase Connectivity) Metodo di accesso standard verso una base dati Scopo: rendere il protocollo di accesso al database indipendente dal tipo di database utilizzato PHP mette a disposizione i i del programmatore una libreria che consente di accedere via ODBC ad una base dati Metodi di accesso mirati ad un DBMS specifico MySQL, Postgres, Microsoft SQL server, PHP mette a disposizione del programmatore librerie specifiche per gran parte dei DBMS D M BG 10 3. Ricezione di un risultato in risposta all istruzione inviata nel caso di SELECT, di un insieme di tuple 4. Elaborazione del risultato ottenuto esistono apposite funzioni per leggere il risultato SQL per le applicazioni Funzioni MySQL per PHP 8 3. Ricezione di un risultato in risposta all istruzione inviata nel caso di SELECT, di un insieme di tuple 4. Elaborazione del risultato ottenuto esistono apposite funzioni per leggere il risultato 5. Chiusura della connessione al termine della sessione di lavoro Creazione di una connessione Chiamata alla funzione mysql_connect() Richiede tre parametri: "hostname" (nome della macchina che ospita il DBMS MySQL a cui si desidera fare la connessione), "username" e "password" In caso di successo restituisce un identificativo di connessione MySQL, in caso di insuccesso restituisce FALSE Esempio; 9 12 2011 Politecnico di Torino 2

Creazione di una connessione Esempio con controllo di eventuali errori di connessione die(): arresta l esecuzione dello script e stampa un messaggio mysql_error(): restituisce il testo dell errore relativo alla funzione Mysql eseguita più recentemente Esecuzione di istruzioni SQL Esecuzione immediata dell istruzione Il server compila ed esegue immediatamente l istruzione SQL ricevuta Esecuzione preparata dell istruzione L istruzione SQL è compilata (preparata) una volta sola e il suo piano di esecuzione è memorizzato dal DBMS è eseguita molte volte durante la sessione Utile quando si deve eseguire la stessa istruzione SQL più volte nella stessa sessione di lavoro varia solo il valore di alcuni parametri 13 16 Chiusura di una connessione Esecuzione immediata Deve essere eseguita quando non è più necessario interagire con il DBMS Chiude il collegamento con il DBMS e rilascia le relative risorse Chiamata alla funzione mysql_close() l Parametro (opzionale): identificativo della connessione Se non viene indicato nessun parametro viene chiusa la connessione aperta più recentemente Chiamata alla funzione mysql_query() Richiede come parametro la query da eseguire, in formato stringa In caso di successo restituisce il risultato della query, in caso di Esempio: 14 17 Connessione ad un DB specifico Esecuzione preparata Chiamata alla funzione mysql_select_db() Richiede come parametro il nome del database da selezionare Esempio: Richiede l estensione MySQLi (MySQL improved) Passi logici 1. Preparazione della query 2. Assegnazione delle variabili ai parametri della query 3. Esecuzione della query 4. Eventuale ripetizione di 2. e 3. con variabili diverse 15 18 2011 Politecnico di Torino 3

Estensione MySQLi Esempio di binding L estensione MySQLi (MySQL improved) è stata messa a disposizione di PHP per permettere alcune funzionalità nuove delle versioni di MySQL 4.1.3 e successive, ad esempio Possibilità di sfruttare un approccio basato sul paradigma object oriented Supporto per le esecuzioni preparate (istruzioni SQL precedentemente utilizzate e mantenute in cache per successive chiamate) Supporto per stored procedure, query multiple e transazioni Tipo del parametro "s": stringa "i": numero intero "d": numero reale 19 22 Preparazione della query Chiamata alla funzione mysqli_prepare() Richiede come parametri l identificativo di connessione e la query da eseguire, in formato stringa I parametri all interno della query sono indicati con un '?' La funzione invia la query a MySQL che ne controlla la validità e ne verifica la correttezza In caso di successo restituisce un oggetto di tipo mysqli_stmt, in caso di insuccesso restituisce FALSE Esecuzione della query preparata Chiamata alla funzione mysqli_stmt_execute() Richiede come parametro l oggetto restituito da mysqli_prepare() 20 23 Binding dei parametri della query Lettura del risultato Prima di eseguire la query bisogna collegare ciascun parametro con la variabile corrispondente (operazione di binding ) Chiamata alla funzione mysqli_stmt_bind_param() Richiede come parametri l oggetto restituito da msqli_prepare(), il tipo dei dati e le variabili che devono essere assegnate ai parametri della query Il risultato della funzione mysql_query() viene memorizzato in una variabile di tipo resource Una variabile speciale, che contiene il riferimento ad una risorsa esterna La lettura del risultato t avviene riga per riga: ciclo che prevede due fasi Acquisizione di una riga della tabella (utilizzo di un cursore) Lettura della riga acquisita 21 NomeF NSoci Andrea 2 Gabriele 2 Cursore 24 2011 Politecnico di Torino 4

Acquisizione di una riga Esistono diverse possibilità per acquisire una riga della tabella Chiamata alla funzione mysql_fetch_row() Richiede come parametro la risorsa restituita da mysql_query() query() Restituisce l array corrispondente alla riga corrente, o FALSE nel caso in cui non ci siano righe disponibili Ciascuna colonna del risultato viene memorizzata in un elemento dell array, a partire dall'indice "0" Esempi NomeF NSoci Andrea 2 Gabriele 2 25 28 Acquisizione di una riga Esempi Chiamata alla funzione mysql_fetch_assoc() Richiede come parametro la risorsa restituita da mysql_query() Restituisce l array associativo corrispondente alla riga corrente, o FALSE nel caso in cui non ci siano righe disponibili Ciascuna colonna del risultato viene memorizzata in un elemento dell array associativo in corrispondenza alla chiave definita dal nome del campo Non viene definito un indice numerico 26 NomeF NSoci Andrea 2 Gabriele 2 29 Acquisizione di una riga Chiamata alla funzione mysql_fetch_array() È la funzione più generale Richiede come parametro la risorsa restituita da mysql_query() e il tipo di array da riempire (scalare, associativo o entrambi) MYSQL_ASSOC: l array risultante è di tipo associativo MYSQL_NUM: l array risultante è di tipo scalare MYSQL_BOTH: l array risultante è accessibile sia con indice numerico sia con chiave corrispondente al nome del campo Altre funzioni utili int mysql_num_rows(resource $result) Restituisce il numero di righe della risorsa $result, o FALSE in caso di insuccesso 27 30 2011 Politecnico di Torino 5

Altre funzioni utili int mysql_num_fields(resource $result) Restituisce il numero di campi (attributi) della risorsa $result, o FALSE in caso di insuccesso string mysql_field_name (resource $result, int $field_offset) ff Restituisce il nome del campo (attributo) specificato dall indice $field_offset, o FALSE in caso di insuccesso Gestione delle transazioni Richiede l estensione MySQLi (MySQL improved) bool mysqli_autocommit (mysqli $link, bool $mode) Abilita o disabilita la modalità auto-commit Richiede come parametri l identificativo di connessione e TRUE o FALSE a seconda che si vogli abilitare o disabilitare la modalità autocommit 31 34 Altre funzioni utili Gestione delle transazioni 32 Se si disabilita l autocommit le operazioni di commit e rollback devono essere richieste esplicitamente bool mysqli_commit (mysqli $link) Esegue il commit della transazione corrente bool mysqli_rollback (mysqli $link) Esegue il rollback della transazione corrente D M BG 35 Le transazioni Le connessioni avvengono implicitamente in modalità auto-commit Dopo l esecuzione con successo di ogni istruzione SQL, è eseguito automaticamente commit Quando è necessario eseguire commit solo dopo aver eseguito con successo una sequenza di istruzioni SQL Il commit deve essere gestito in modo non automatico Si esegue un solo commit alla fine dell esecuzione di tutte le istruzioni 33 2011 Politecnico di Torino 6