SISTEMI INFORMATIVI E TELEMEDICINA. Prof. Mauro Giacomini

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

Sommario. Introduzione... xi. Capitolo 1 Sistemi Informativi Capitolo 2 Modelli dei dati e database relazionali... 15

Access. P a r t e t e r z a

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

LA GESTIONE DEI DATABASE

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

Quando usare file di dati

ListBox e ComboBox. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

La connessione ai database MySQL tramite script PHP versione 5.5

MS Access Un DBMS relazionale per Windows?

SQL: le funzioni di aggregazione

Magazzino: software di gestione di un database di strumenti musicali

Select From Where...

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Corso di Microsoft. Access. Marco P. Locatelli.

Sistemi Informativi e Telemedicina Prof. Mauro Giacomini Anno Accademico

DISPENSA ACCESS (OFFICE 2010 BETA)

Dispense dell insegnamento di Laboratorio di GIS per la pianificazione

Corso di Access. Prerequisiti. Modulo L2A (Access) Struttura delle tabelle

APPUNTI DELLA LEZIONE DI DATABASE DEL 20/10/2016 (POMERIGGIO)

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

MS Access: Tutorial Tabelle, Relazioni

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

SQL Server Introduzione all uso di SQL Server Dutto Riccardo. Dutto Riccardo - SQL Server 2008.

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

C3 IL DBMS MICROSOFT ACCESS

Mariano Pirrotta. A c t i v e S e r v e r P a g e * * *

Inserire record. Microsoft Access. Inserire/modificare record. Inserire record. Cancellare record. Inserire/modificare record

Accedere ai dati in modo mirato

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

4. I moduli in Access 2000/2003

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Come creare un nuovo Prodotto per ebay con Var.

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Capitolo Tavola e grafico

CORSO ACCESS PARTE IV

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

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

ACG Enterprise Connettore Mytho

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Lezione 5. Il Modello dei Dati Relazionale Vincoli sui Database Relazionali

SQL Server BI Development Studio. SQL Server Business Intelligence Development Studio. Analysis Services

Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO

Guida per la gestione delle sedute di laurea su Gomp

ListView. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

L AMBIENTE CODE BLOCKS E L IO

Caratteristiche dei linguaggi per Database

Relazioni. Microsoft Access. Relazioni. Relazioni

Analysis Service. Dutto Riccardo IPSI - tel Dutto Riccardo - SQL Server 2008.

Corso di Access Modulo L2 A (Access) I tipi di query

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Phpmyadmin. Creazione Database

SQL Server Business Intelligence Development Studio. SQL Server BI Development Studio. SQL Server BI Development Studio *Analysis Services*

SQL Server Business Intelligence Development Studio

Cosa sono i report. Prof. Emanuele Papotto 05/10/2010

Gestione di files Motivazioni

2.3.2 I tipi di query MODULO L2

Vista Dettagli Titoli La vista Dettagli titoli mostra le operazioni e le informazioni sui prezzi che riguardano un titolo specifico del portafoglio

Importazione ed esportazione anagrafiche cliente

Esercitazione: Il DBMS MySQL. Insegnamento di Basi di Dati. Laurea in Ingegneria Informatica SAPIENZA Università di Roma

INTRODUZIONE AI DBMS

INTRODUZIONE AI DBMS. Inoltre i fogli elettronici. Mentre sono poco adatti per operazioni di. Prof. Alberto Postiglione

Manuale utente Volta Control

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

Gestione della configurazione Input/Output PLC Cosa c'è di nuovo?

Array. Walter Didimo

L AMBIENTE CODE BLOCKS E L IO

Stringhe. Walter Didimo

1.1 Lavorare con il foglio elettronico. Appena aperto LibreOffice, si può scegliere da qui Foglio elettronico

Structured Query Language

CORSO DI PROGRAMMAZIONE

Strutture dati e loro organizzazione. Gabriella Trucco

Fondamenti di Informatica A. A / 1 9

Indice. Introduzione PARTE PRIMA PRELUDIO: SERVIZIO CON SORRISO 1

Registro Unico dei Controlli (RUC) Manuale per la consultazione e il caricamento dei controlli

SEE Electrical Expert V4: FAQ

Verifica su Record e File

A livello fisico, un istanza di base di dati Oracle è composta. Gubiani & Montanari Oracle Database 3

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Configurazione di una LAN in ambiente Windows

SISTEMI OPERATIVI, RETI, INTERNET

Elementi di Base. Introduzione a Python.

Informatica e Bioinformatica: Basi di Dati

Esempio su strutture dati dinamiche: ArrayList

Corso di Access. Modulo L2 A (Access) 1.4 Le maschere

Manuale SQL. Manuale SQL - 1 -

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

MODULO 5 ACCESS Basi di dati

I DATABASE CREAZIONE DI UNA RUBRICA: Definiamo i campi della tabella. ID Cognome Nome Etc.

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Corso di Basi di Dati A.A. 2016/2017

exoml xml Fattura Elettronica ver

File binari e file di testo

Trenitalia Gruppo Ferrovie dello Stato

Corso di Basi di Dati A.A. 2015/2016

FATTURAZIONE ELETTRONICA 2019: FLUSSO ESTRAZIONE FATTURE XML

Transcript:

SISTEMI INFORMATIVI E TELEMEDICINA 7. Accesso ai dati Prof. Mauro Giacomini

Sommario Proprietà e metodi dei seguenti oggetti DataReader DataAdapter DataTable DataSet t

DataReader: caratteristiche Contiene solo una struttura dati alla volta (il risultato di un unicaunica query) i valori di un solo record alla volta Solo lettura sequenziale no ordinamento no accesso casuale no cambiamento dei valori nei DB Lettura solo connessa Ottimizzazione elevata Tre tipi per i 3 diversi data provider

SqlDataReader: Confronti Protocollo di comunicazione col server proprio dei client di SqlServer Tabular Data Stream (TDS) Assenza di provider intermedi Metodi di accesso ai dati che restituiscono i datatype nativi di SQL Server: minimizzazione delle perdite di precisione

Creazione del DataReader Importazione del namespace Dichiarazione Istanziazione specifica con il metodo New Item: proprietà che restituisce il valore di una colonna del record dei dati estratti Colonna specificata con il nome (nome del campo della tabella o alias pubblicato nella query) o la posizione ordinale nel record (si parte da 0) FieldCount: proprietà che restituisce il numero dei campi del record corrente.

DataReader: metodi (1) Ottiene i dati con il metodo ExecuteReader dell oggetto Command DataReader non contiene i dati estratti, ne consente solo la lettura con il metodo Read Si deve sempre invocare il metodo Read all inizio per generare il puntatore ai dati Se la lettura ha dato esito positivo il valore di Read è true Si legge in un loop da cui si esce quando Read restituisce false Close: metodo di chiusura della connessione e dell oggetto DataReader stesso Chiusura automatica gestita dalla proprietà CommandBehaviour GetName: restituisce una stringa contenente il nome della colonna (indicata con la posizione ordinale), serve per le intestazioni delle tabelle GetOrdinal: restituisce un numero indicante la posizione della colonna all interno del record (indicata con il nome del campo)

Esempio: commenti Vedi Routine LeggiDataReader Estrazione dei dati da visualizzare Generazione della stringa SQL Uso di procedura esterna Lettura in un ciclo While Identificazione del primo record Scrittura dell intestazione dei dati stessi con un ciclo For Scrittura del contenuto dei campi stessi con un altro ciclo for più esterno, usando la proprietà item

Uso del DataReader: Esempio Caricamento di oggetti visuali come ListBox e ComboBox Scopo: leggere tutti i record della tabella Prodotti e metterne in nomi nel controllo lstprodotti (vedi routine CaricaListBox) con il metodo Add della collection Items della lista stessa Questa Routine deve essere chiamata dall evento load della form Gli oggetti di tipo lista possono contenere nella lista degli items oggetti più complessi del solo nome La struttura degli item può essere definita con apposite classi

Definizione delle classi Selezionare AddClass dal menu progetto, specificandone il nome Vedi listato clsprodotto Una proprietà per ogni informazione di dettaglio che si vuole gestire Classe Generale per un oggetto numerico con descrizione alfanumerica, con due proprietà: IdOggetto: codice numerico NomeOggetto: descrizione dell oggetto Usata per caricare le ComboBox dei fornitori e delle categorie

Caricamento della ListBox Vedi il listato di CaricaListBoxClassLong SQL più articolata per valorizzare la classe clsprodotto Per ogni record è creato un nuovo oggetto istanziando la classe, le cui proprietà sono valorizzate leggendo la proprietà Item dell oggetto DataReader Si aggiunge il prodotto alla lista con il metodo Add della collezione Items della lista Quello che si vede nella lista è determinato dalla funzione ToString della classe clsprodotto invocata all atto della valorizzazione della proprietà NomeProdotto, la sua ridefinizione nella classe fa sì che la proprietà NomeProdotto sovrascriva tutte le altre in fase di visualizzazione

Caricamento delle ComboBox Si usano istanze della classe clsoggettonum Vedi il listato CaricaFornitori Per ogni record è creato un oggetto della classe le cui proprietà sono valorizzate con gli item del record stesso Si aggiunge l oggetto agli item della ComboBox Anche qui una proprietà p sovrascrive le altre in fase di visualizzazione Esercizio: scrivere la CaricaCategorie Tutte queste procedure devono essere eseguite durante il load della form

Visualizzazione (1) Scopo: popolare gli oggetti con i dettagli dell Item selezionato Nelle TextBox basta l assegnazione diretta Nelle ComboBox va individuato il valore al loro interno (vedi listato: CercaItemInCombo). Alla routine si passa l oggetto in cui cercare (byref modificabile) e lid l id da cercare (byval immodificable)

Visualizzazione (2) Scopo caricare i dettagli nella form Vedi listato CaricaFormCollection Generazione dell oggetto di tipo clsprodotto con l istruzione CType che converte un oggetto che appartiene alla collezione degli item della lista in un oggetto della classe clsprodotto. Le proprietà di questo oggetto popolano i record o direttamente o con la subroutine vista prima Questa visualizzazione deve essere innescata dall evento SelectedIndexChanged della lista dei prodotti

Sequenza di esecuzione Alla load sono chiamate le routine di caricamento di fornitori, categorie e alla fine dei prodotti Quando sono caricati tutti i prodotti la selezione automatica ti del primo prodotto della lista fa scattare l evento SelectedIndexChanged così anche gli altri controlli sono caricati correttamente

Modifiche: Aggiornamento Creare un nuovo oggetto di tipo clsprodotto Popolare le proprietà p con i nuovi valori digitati negli oggetti Eseguire una query di update Vedi listato AggiornaPropProdotto per la popolazione delle proprietà dell oggetto clsprodotto Di nuovo si usa CType Vedi listato AggiornaRecProdotto per la scrittura della tabella Prodotti Scrive i parametri della query di update dalle proprietà p dell oggetto clsprodotto Chiama la procedura EseguiWriteParametrica L aggiornamento è eseguito alla pressione del tasto aggiorna. Vedi listato: btnaggiorna_click Dopo l aggiornamento si deve ricaricare la lista dei prodotti Selezionare di nuovo il prodotto modificato per vedere se le modifiche sono state registrate

DataTable DataColumn (1) Contenitore di memoria strutturato in modo del tutto simile alla tabella di un DB. Non dipende dal DBMS interfacciato. Creazione esplicita con il comando new Proprietà TableName: nome univoco Definizione dei campi che compongono il record: oggetto DataColumn Columns: Proprietà di tipo collection che contiene i campi fra i quali coloro che costituiscono la chiave primaria Creazione esplicita con il comando new Proprietà ColumnName: nome univoco in ogni tabella Proprietà DataType: ottenuta con il metodo GetType

DataColumn (2) Possibilità di definire dei vincoli con le proprietà booleane Unique AllowDBNull La tabella ha una collezione di colonne Columns a cui la colonna definita e completata può essere aggiunta con il metodo Add Possibile definire una lunghezza massima MaxLength

DataRow Definizione ed assegnazione ad una DataTable per indicarne la struttura Accoglie i record da gestire, con la valorizzazione di tutti i campi Quando tutti i campi obbligatori hanno valore si inserisce la riga nella collezione Rows della tabella con il comando Add

DataAdapter Fornisce più funzionalità rispetto a DataReader Indicato per estrarre dati da manipolare Dipende dal particolare DBMS Creazione con New Necessita di: Comando Valido Connessione attiva È possibile sia associare a un DataAdapter il comando e la connessione in due modi Associando dei comandi e delle connessioni precedentemente definite Passando all atto della istanziazione due parametri: la stringa di SQL e la stringa di connessione, in questo secondo caso la connessione sarà completamente gestita dal DataAdapter

DataAdapter e DataTable Il metodo Fill riempe un DataTable di cui non si deve neppure definire la struttura Tale tabella rimane in memoria, svincolata dalla conessione e possiamo scorrerla a piacimento evitando le limitazioni che avevamo con il DataReader. Vedi listato: CaricaListBoxDataTable Si scorrono tutte le Row del DataTable e per ogni row si genera un oggetto del tipo clsprodotto Anche le ComboBox possono essere riempite con DataAdapter e DataTable, vedi listato: CaricaFornitoriDataTable

DataSet DataSet: contenitore di oggetti di tipo DataTable popolate dall applicazione li i Questa tabelle possono essere correlate tra loro con apposite relazioni Si riproduce un DB nella memoria Non dipende dal DBMS Dichiarazione semplice e anche semplice istanziazione

Popolare un DataSet Varie possibilità: Definire e costruire in modo esplicito gli oggetti DataTable e aggiungerli al DataSet, definire le relazioni che li legano e popolarli in un secondo momento leggendo una fonte di dati (anche non relazionale) Usare il metodo Fill dell oggetto DataAdapter sia per creare sia per popolare i DataTable del DataSet Una libera combinazione i dei due metodi precedenti Aggiunta di un DataTable a un DataSet è molto semplice: DataSet ha una collection (Tables) a cui con il metodo Add posso aggiungere delle DataTable Vedi listato CaricaDataSet

Commenti Tre tabelle nel DB tre DataTable in un DataSet tra stringhe per i tre comandi SQL Definizione di un DataSet esplicito Un unico DataAdapter da usare per le tre tabelle La prima stringa SQL e la stringa di connessione si passano alla creazione del DataAdapter Passando al metodo Fill un DataSet dobbiamo specificare la Table in cui mettere i dati La chiave primaria di ogni tabella viene definita esplicitamente

Creazione delle relazioni Necessario istanziare un oggetto DataRelation Nel comando di creazione è necessario specificare: Il nome della relazione Gli oggetti DataColumn coinvolti Un valore booleano che indica se la relazione è attiva o no Vedi listato: CreaRelazioni 4 DataColumn e 2 DataRelation Per ogni relazione: una coppia di DataColumn di due DataTable diverse

Scrittura del DB Due fasi: La scrittura influenza solo i dati locali La conferma copia nel DB Vedi Listato: AggiornaProdottoDataSet e InserisciProdottoDataSet ip t t

SQLCommandBuilder Fornisce in modo automatico le istruzioni SQL necessarie per trasformare le modifiche su un DataTable in aggiornamenti effettivi su tabelle del DB. Per generare le istruzioni di Insert, Update e Delete l oggetto SQLCommandBuilder usa la proprietà SelectCommand per estrarre un set di dati da confrontare con il DataTable che si intende aggiorenare Da questo confronto l SQLCommandBuilder crea le istruzioni i i SQL che saranno eseguire dall oggetto dataadapter. Vedi : Conferma aggiornamento Annullamento molto semplice: basta invocare il metodo RejectChanges