Tecnologie di Sviluppo per il Web



Documenti analoghi
Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

ADO.Net. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Tecnologie di Sviluppo per il Web

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Architettura MVC-2: i JavaBeans

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Tecnologie di Sviluppo per il Web

Lezione 9. Applicazioni tradizionali

Tecnologie di Sviluppo per il Web

JDBC. A. Bechini Accesso a DataD con Java

JDBC versione base. Le classi/interfacce principali di JDBC

Introduzione JDBC interfaccia java.sql driver caricare i driver

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 4/5. ADO.NET e Connessione Prof. Mauro Giacomini

Programmazione Orientata agli Oggetti in Linguaggio Java

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Corso di Informatica Modulo T3 B2 - Database in rete

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

JDBC di base. Le classi/interfacce principali di JDBC

Programmazione Orientata agli Oggetti in Linguaggio Java

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

La tecnologia ASP.NET e i database

Scheda 15 Accedere ai DataBase con JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

Comprendere ADO.NET. La guida definitiva per comprendere a fondo ADO

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D

Introduzione alla rete Internet

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Programmazione Java Avanzata Spring - JDBC

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Tecnologie di Sviluppo per il Web

Esercitazione su JDBC

GERARCHIE RICORSIVE - SQL SERVER 2008

19. LA PROGRAMMAZIONE LATO SERVER

Basi di dati (3) Ing. Integrazione di Impresa A.A. 2007/08

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Corso di Sistemi di Elaborazione delle informazioni

Progettaz. e sviluppo Data Base

Standard Nazionale di Comunicazione Mercato Gas

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Database e reti. Piero Gallo Pasquale Sirsi

Università degli Studi di Bologna Bologna, 12/12/2002 Corso di Laurea In Informatica. Alessandro Valenti. Sessione II

Esercitazione 4 JDBC

Web Content Management and E- Learning

Dispensa di database Access

UTC Fire & Security - Training University. ATS8600 Advisor Integrated Management Training installatore

SISTEMI INFORMATIVI E TELEMEDICINA. 6. Query Prof. Mauro Giacomini

URI. Introduzione. Pag. 1

Volumi di riferimento

Corso di Amministrazione di Reti A.A. 2002/2003

Registratori di Cassa

Procedura Gestione Pratiche Sicurezza Cantiere

Una metodologia di progettazione di applicazioni web centrate sui dati

JDBC. Dispense per il corso di Ingegneria del Web

Approfondimenti. Il controllo di SQL Injection nelle pagine ASP e ASP.NET. U.A. 5 - Database in rete con le pagine ASP e ASP.

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

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

Guida Google Cloud Print

Installazione e caratteristiche generali 1

MagiCum S.r.l. Progetto Inno-School

Java: la libreria delle classi

Inetd e TCP Wrappers

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Configurazione di base. Dott. Doria Mauro

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Corso Analista Programmatore Microsoft. Corso Analista Programmatore Microsoft Programma

Introduzione ai database relazionali

Protezione. Protezione. Protezione. Obiettivi della protezione

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Al giorno d oggi, i sistemi per la gestione di database

SOMMARIO Introduzione Caratteristiche generali della piattaforma Amministrazione degli utenti 5

Le presenti note vengono rilasciate per presentare le principali novità della release 2010 Sp1 di Contact Pro.

Corso sul linguaggio SQL

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Guida Google Cloud Print

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Approfondimenti. Contenuti

Standard Nazionale di Comunicazione Mercato Gas

FileMaker Pro 13. Utilizzo di una Connessione Desktop Remota con FileMaker Pro13

DBMS ed Applicazioni Motivazioni

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Guida Google Cloud Print

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

C o r s o L i b e r o d i Emiliano Gabrielli <AlberT@SuperAlberT.it> GrUSP.it

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Standard Nazionale di Comunicazione Mercato Gas

Gestione di un magazzino: sviluppo di un applicazione web-database

Tecnologie di Sviluppo per il Web

Guida Google Cloud Print

utente: collezione di contenuti e servizi sviluppatore: pagine e applicazioni

Access. P a r t e p r i m a

Controllo web per endpoint Panoramica. Sophos Web Appliance Sophos Enterprise Console Sophos Endpoint Security and Control

Transcript:

Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: ADO.NET versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca mecca@unibas.it Università della Basilicata Programmazione su BD: ADO.NET >> Sommario Sommario Introduzione Connessioni Comandi DataReader Gestione delle Connessioni Altri Tipi di Statement DataSet Cenni 2

Programmazione su BD: ADO.NET >> Introduzione Introduzione La tecnologia ADO.NET evoluzioni delle precedenti tecnologie per la gestione dei dati sviluppate dalla Microsoft: ADO, DAO... unifica i vari protocolli di comunicazione con il DBMS sviluppati dalla Microsoft: ODBC, OLEDB... fortemente ottimizzata per l uso di SQLServer 3 Programmazione su BD: ADO.NET >> Introduzione Introduzione Attenzione la tecnologia cambia ma gli aspetti metodologici restano esattamente gli stessi ADO.NET è una tecnologia molto più complessa di JDBC ne vediamo per cominciare un sottoinsieme che è sostanzialmente equivalente al sottoinsieme visto di JDBC 4

Programmazione su BD: ADO.NET >> Introduzione Introduzione Il namespace di riferimento System.Data definisce tutte le principali interfacce IDbConnection IDbcommand IDataReader (analoga a ResultSet) Gli altri namespace implementano i diversi provider di dati 5 Programmazione su BD: ADO.NET >> Introduzione Introduzione Provider di dati ADO.NET analogo del driver per JDBC fornisce una implementazione per le interfacce di System.Data per uno specifico sistema la piattaforma.net fornisce vari provider sotto forma di namespace standard altri provider possono essere scaricati dalla rete sotto forma di dll 6

Programmazione su BD: ADO.NET >> Introduzione Introduzione I provider standard forniti System.Data.SqlClient: provider nativo per SqlServer System.Data.OracleClient: provider nativo per Oracle System.Data.OleDb: provider di tipo bridge verso un provider OleDb (es: SQLOLEDB) System.Data.Odbc: provider di tipo bridge verso un driver ODBC 7 Programmazione su BD: ADO.NET >> Introduzione Introduzione Un esempio di provider non standard Npgsql, il provider di dati per PostgreSQL distribuito sotto forma di file.zip sul sito gborg.postgresql.org Il package System.Data.Common classi comuni a tutti i provider 8

Programmazione su BD: ADO.NET >> Introduzione Introduzione Il provider fondamentale il provider nativo per SqlServer: di gran lunga il più efficace Applicazione Provider SqlClient Applicazione Provider OleDb SQLOLEDB SqlServer Rete Rete SqlServer (o altro DBMS) 9 Programmazione su BD: ADO.NET >> Introduzione Introduzione Le classi di System.Data.SqlClient SqlConnection : IDbConnection SqlCommand : IDbCommand SqlDataReader : IDataReader SqlException : System.Exception 10

Programmazione su BD: ADO.NET >> Connessioni Connessioni Per ottenere una connessione al DBMS è necessario creare un oggetto di tipo IDbConnection utilizzando l opportuna implementazione specificando una stringa di connessione Stringa di connessione.net sequenza di coppie nome = valore separate da ; che descrivono i parametri di connessione 11 Programmazione su BD: ADO.NET >> Connessioni Connessioni Parametri per SqlConnection Data Source: indirizzo IP del server (in alternativa: Server) Database: nome della base di dati (in alternativa: Initial Catalog) Integrated Security: true/false, specifica se utilizzare il meccanismo di aut. di Windows User ID Password 12

Programmazione su BD: ADO.NET >> Connessioni Connessioni >> DataSource Per creare connessioni un componente DataSource il metodo GetConnection() inizializza la stringa di connessione sulla base di parametri fissati crea l oggetto di tipo SqlConnection apre la connessione chiamando il metodo Open() restituisce il rif. alla connessione aperta 13 Programmazione su BD: ADO.NET >> Connessioni namespace Unibas.Aci.Persistenza { using System.Data; public class DataSource { } private string datasource = "localhost"; private string database = "acibase"; private string userid = "msdeuser"; private string password = "msdeuser"; public IDbConnection GetConnection() { IDbConnection connection = null; string connectionstring = "Data Source = " + this.datasource + "; " + "Database = " + this.database + "; " + "Integrated Security = false; " + "User ID = " + this.userid + "; " + "Password = " + this.password; try { connection = new System.Data.SqlClient.SqlConnection(connectionString); connection.open(); } catch (System.Data.SqlClient.SqlException sqle) { Close(connection); throw new DAOException("GetConnection: " + sqle); } return connection; }... 14

Programmazione su BD: ADO.NET >> Connessioni Connessioni Nota per creare connessioni utilizzando un provider diverso è sufficiente cambiare l istruzione di creazione è però in generale necessario anche cambiare la stringa di connessione Esempio: provider OleDb è necessario aggiungere Provider = SQLOLEDB per l accesso a SqlServer 15 Programmazione su BD: ADO.NET >> Comandi Comandi Per effettuare operazioni sul DBMS oggetti di tipo IDbCommand implementati da SqlCommand si ottengono dalla connessione utilizzando il metodo CreateCommand() richiedono di impostare il valore di alcune proprietà, in particolare la proprietà CommandText 16

Programmazione su BD: ADO.NET >> Comandi Comandi >> DAOProprietario Due metodi principali ExecuteNonQuery() esegue un comando che corrisponde ad un aggiornamento ExecuteReader() esegue un comando che corrisponde ad una query SQL e restituisce un riferimento al DataReader che consente di scandire il risultato 17 Programmazione su BD: ADO.NET >> DataReader DataReader Per scandire il risultato di una query risultati di tipo IDataReader implementati da SqlDataReader vengono ottenuti dal metodo ExecuteReader() di IDbCommand metodo per la scansione: boolean Read() per l accesso agli attributi si utilizza la sintassi delle mappe 18

Programmazione su BD: ADO.NET >> DataReader DataReader >> DAOProprietario Esempio: DoSelectProprietarioPerNome connection = datasource.getconnection(); command = connection.createcommand(); string query = "select * from proprietari where nome = '" + nome + "'"; command.commandtext = query; datareader = command.executereader(); while (datareader.read()) { Proprietario proprietario = new Proprietario(); proprietario.codicefiscale = (string)datareader["codicefiscale"]; proprietario.nome = (string)datareader["nome"]; proprietario.cittadiresidenza = (string)datareader["cittadiresidenza"]; proprietario.annopatente = (int)datareader["annopatente"]; listaproprietari.add(proprietario); } 19 Programmazione su BD: ADO.NET >> Gestione delle Connessioni Gestione delle Connessioni Chiusura di una connessione metodo Close() di IDbConnection Il provider di SqlServer gestisce un pool di connessioni standard le connessioni non vengono chiuse ma restituite al pool e successivamente riutilizzate 20

Programmazione su BD: ADO.NET >> Altri Tipi di Statement Altri Tipi di Statement Per utilizzare statement preparati bisogna utilizzare una variante di IDbCommand Strategia si specifica un command text con parametri; ciascun parametro è preceduto da @ viene preparato lo statement successivamente per eseguirlo è sufficiente fornire un valore al parametro 21 Programmazione su BD: ADO.NET >> Altri Tipi di Statement Altri Tipi di Statement Una differenza rispetto a JDBC è necessario creare esplicitamente un oggetto per ciascun parametro della query specificando nome e tipo di dato I componenti necessari interfaccia IDataParameter implementazione SqlParameter 22

Programmazione su BD: ADO.NET >> Altri Tipi di Statement Altri Tipi di Statement >> DAOProprietario Esempio: DAOUtente connection = datasource.getconnection(); command = connection.createcommand(); string query = "select * from utenti where nomeutente = @nomeutente"; command.commandtext = query; SqlParameter parametro = new SqlParameter(); parametro.parametername = "@nomeutente"; parametro.sqldbtype = SqlDbType.VarChar; parametro.size = 10; command.parameters.add(parametro); command.prepare(); ((SqlParameter)command.Parameters["@nomeutente"]).Value = nomeutente; datareader = command.executereader(); 23 Programmazione su BD: ADO.NET >> Altri Tipi di Statement Altri Tipi di Statement Per le stored procedure si utilizza comunque l interfaccia IDBCommand ma è possibile cambiare il tipo di comando attraverso la proprietà CommandType Esempio: IDbCommand command = null; command = connection.createcommand(); command.commandtype = CommandType.StoredProcedure; 24

Programmazione su BD: ADO.NET >> Altri Tipi di Statement Altri Tipi di Statement Successivamente è necessario specificare i parametri relativi alla chiamata della stored procedure aggiungendoli alla collezione Parameters 25 Programmazione su BD: ADO.NET >> DataSet Cenni DataSet Cenni Attenzione l utilizzo esplicito dei comandi e dei DataReader è solo una delle modalità di utilizzo di ADO.NET In effetti ADO.NET ha al suo interno un framework vero e proprio per la gestione della persistenza basato sul concetto di DataSet 26

Programmazione su BD: ADO.NET >> DataSet Cenni DataSet Cenni DataSet vista orientata agli oggetti su una porzione di una sorgente dati (tipicamente una base di dati) Caratteristiche del DataSet viene utilizzata in modo disconnesso, ovvero non richiede una connessione permanente alla base di dati 27 Programmazione su BD: ADO.NET >> DataSet Cenni DataSet Cenni Utilizzo disconnesso l utente descrive dichiarativamente in un file di configurazione la struttura del DataSet il sistema inizializza il DataSet l utente lavora sugli oggetti del DataSet il sistema si preoccupa di tenere il DataSet aggiornato rispetto alla base di dati con una politica di aggiornamento periodico questo garantisce ottime prestazioni 28

Programmazione su BD: ADO.NET >> DataSet Cenni DataSet Cenni Quindi il programmatore inizializza il DataSet e poi lavora con gli oggetti relativi, senza doversi poi preoccupare delle modalità di sincronizzazione con la base di dati in effetti sembra conseguire l obiettivo di separare gli strati fornendo un meccanismo automatico per la gestione della persistenza 29 Programmazione su BD: ADO.NET >> DataSet Cenni DataSet Cenni Ma... gli oggetti del DataSet non sono oggetti del modello (es: Proprietari e Automobili), ma oggetti che rappresentano le tabelle e le righe relative quindi incoraggiano uno stile di programmazione in cui lo strato del modello non esiste 30

Programmazione su BD: ADO.NET >> Sommario Riassumendo Introduzione Connessioni Comandi DataReader Gestione delle Connessioni Altri Tipi di Statement DataSet Cenni 31 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. 32