27.06.2014 Views

INFORMATICA MEDICA

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>INFORMATICA</strong> <strong>MEDICA</strong><br />

6. Query<br />

Prof. Mauro Giacomini


Sommario<br />

• Operazioni possibili su un database<br />

• Oggetto Command<br />

• Query di lettura dei dati<br />

• Query di scrittura dei dati<br />

• Query parametriche<br />

• Esempi di query<br />

Inf. Med. - 6. Query - A.A. 2013/14


Tipi di operazioni<br />

• Un’applicazione client-server può fare:<br />

• Operazioni di lettura<br />

• Estrazione di dati puntuali (consultazione o preliminare alla<br />

modifica)<br />

• Estrazione di dati aggregati<br />

• Operazioni di scrittura<br />

• Scrittura di dati puntuali (maschera)<br />

• Scrittura di blocchi di dati (procedure apposite)<br />

• Operazioni di modifica della struttura (ma non effettuate<br />

di solito da applicazioni client-server; fatte dal DBA con<br />

tool specifici)<br />

Inf. Med. - 6. Query - A.A. 2013/14


Oggetto Command (1)<br />

• Tutte le operazioni sul DB non sono effettuate<br />

direttamente sul DB dall’applicazione<br />

• Il client fa la richiesta, il DBMS la esegue<br />

• Il DBMS<br />

• Riceve la richiesta di accesso ai dati<br />

• Controlla la sua correttezza formale<br />

• Esegue la richiesta<br />

• Restituisce esito e risultato<br />

• Esito: se andata o no a buon fine<br />

• Risultato: valori richiesti e/o riassunto (numero di record<br />

modificati/scritti)<br />

Inf. Med. - 6. Query - A.A. 2013/14


Oggetto Command (2)<br />

• Funzioni:<br />

• Trasmissione di richiesta di accesso ai dati<br />

• Riportare alla applicazione esito e risultato<br />

• Tre oggetti di tipo command<br />

• SqlCommand<br />

• OleDBCommand<br />

• OdbcCommand<br />

Inf. Med. - 6. Query - A.A. 2013/14


Creazione di un comando (VB)<br />

• Importazione del Namespace corrispondente<br />

• Imports System.Data.SqlClient<br />

• Dichiarazione / Istanziazione esplicita<br />

• Dim myCmd As New SqlCommand<br />

• Dim myConn as New SqlConnection<br />

• myCmd.Connection = myConn<br />

• Dichiarazione / Istanziazione implicita<br />

• Dim myCmd As SqlCommand<br />

• Dim myConn as New SqlConnection<br />

• myCmd = myConn.CreateCommand<br />

Inf. Med. - 6. Query - A.A. 2013/14


Creazione di un comando (CS)<br />

• Importazione del Namespace corrispondente<br />

• Using System.Data.SqlClient;<br />

• Dichiarazione / Istanziazione esplicita<br />

• SqlCommand myCmd = New SqlCommand();<br />

• SqlConnection myConn = New SqlConnection();<br />

• myCmd.Connection = myConn;<br />

• Dichiarazione / Istanziazione implicita<br />

• SqlCommand myCmd = New SqlCommand();<br />

• SqlConnection myConn = New SqlConnection();<br />

• myCmd = myConn.CreateCommand();<br />

Inf. Med. - 6. Query - A.A. 2013/14


Stringa di Comando (VB)<br />

• CommandText<br />

• Contiene il testo del comando che si vuole eseguire<br />

• Scritto nella sintassi del SQL del DBMS da usare<br />

• Dim myCmd as New SqlCommand (“SELECT * FROM<br />

Impiegati”, myConn)<br />

• O<br />

• Dim myCmd as SqlCommand<br />

• myCmd = myConn.CreateCommand<br />

• myCmd.CommandText = “SELECT * FROM Impiegati”<br />

Inf. Med. - 6. Query - A.A. 2013/14


Stringa di Comando (CS)<br />

• CommandText<br />

• Contiene il testo del comando che si vuole eseguire<br />

• Scritto nella sintassi del SQL del DBMS da usare<br />

• SqlCommand myCmd = New SqlCommand (“SELECT *<br />

FROM Impiegati”, myConn);<br />

• O<br />

• SqlCommand myCmd;<br />

• myCmd = myConn.CreateCommand();<br />

• myCmd.CommandText = “SELECT * FROM Impiegati”;<br />

Inf. Med. - 6. Query - A.A. 2013/14


La connessione<br />

• Proprietà Connection<br />

• La connessione deve essere attiva quando si<br />

leggono/scrivono i dati<br />

• Passa i contenuti a un oggetto DataReader<br />

Inf. Med. - 6. Query - A.A. 2013/14


Tipo di comando<br />

• Si possono passare:<br />

• Stringhe in formato SQL<br />

• Nomi di Stored Procedures<br />

• Proprietà CommandType<br />

• Contiene il tipo con cui interpretare il contenuto della<br />

CommandText<br />

• Valori possibili:<br />

• Text (default): comando SQL<br />

• StoredProcedure: chiamata a una StoredProcedure<br />

immagazzinata nel DBMS<br />

• TableDirect: nome di una tabella (solo per DBMS diversi da<br />

SQLServer)<br />

Inf. Med. - 6. Query - A.A. 2013/14


Tempo di esecuzione<br />

• CommandTimeout: tempo massimo di<br />

esecuzione del comando espresso in<br />

secondi<br />

• Default: 30 secondi<br />

• Passato il tempo massimo si genera un<br />

errore<br />

Inf. Med. - 6. Query - A.A. 2013/14


Esecuzione del comando<br />

• I metodi mandano solo la richiesta al DBMS<br />

• Due gruppi<br />

• ExecuteReader (mette i dati in un oggetto<br />

DataReader), ExecuteXMLReader (che restituisce<br />

i dati in fomto XML)<br />

• ExecuteNonQuery (scrittura)<br />

Inf. Med. - 6. Query - A.A. 2013/14


ExecuteReader<br />

• Un parametro: CommandBehavior<br />

• Valori possibili:<br />

• CloseConnection: connessione chiusa alla fine<br />

dell’uso dell’oggetto DataReader<br />

• SchemaOnly: restituisce solo la struttura dei campi<br />

letti<br />

• KeyInfo: Si aggiunge ai record una colonna con la<br />

chiave primaria dei dati estratti<br />

• SingleResult: restituisce un risultato singolo<br />

• SingleRow: restituisce solo il primo record letto<br />

Inf. Med. - 6. Query - A.A. 2013/14


ExecuteNonQuery<br />

• In CommandText istruzione SQL diversa dalla<br />

lettura<br />

• Possibili solo: scrittura, modifica,<br />

cancellazione, alterazione della struttura del<br />

DB<br />

• Restituisce il numero di record interessati alla<br />

modifica<br />

• Restituisce l’esito del comando<br />

Inf. Med. - 6. Query - A.A. 2013/14


Query parametriche<br />

• Utili per i filtri<br />

• Da mettere nel clausole WHERE o HAVING<br />

• Fondamentali per il riutilizzo del software<br />

• I parametri sono variabili precedute dal simbolo @<br />

mySQL = “UPDATE Impiegati “ & “SET posizione = @posizione, “ & _<br />

“città = @città, “ & “zona = @zona, “ & “WHERE cognome = @cognome “ & _<br />

“AND nome = @nome”<br />

mySQL = “UPDATE Impiegati “ + “SET posizione = @posizione, “ +<br />

“città = @città, “ + “zona = @zona, “ + “WHERE cognome = @cognome “ +<br />

“AND nome = @nome”;<br />

Inf. Med. - 6. Query - A.A. 2013/14


Collection dei parametri (1)<br />

• Proprietà Parameters popolata da oggetti di<br />

tipo Parameter le cui proprietà sono:<br />

• ParameterName: nome del parametro<br />

• DbType: tipo del parametro generico (possibili<br />

valori elencati in System.Data.DbType)<br />

• OleDbType: tipo del parametro specifico per<br />

l’OleDB (connesso internamente a DbType)<br />

• Value: valore assegnato al parametro<br />

Inf. Med. - 6. Query - A.A. 2013/14


Collection dei parametri (2)<br />

• Direction: direzione del parametro (input, output, o<br />

parametro di ritorno di una stored procedure)<br />

• IsNullable: indica se il parametro può accettare un<br />

valore nullo<br />

• Size: grandezza massima in byte del parametro<br />

• Precision: per parametri numerici, numero massimo di<br />

cifre intere<br />

• Scale: per parametri numerici, numero massimo di cifre<br />

decimali<br />

Inf. Med. - 6. Query - A.A. 2013/14


Collection dei parametri (3)<br />

• Metodi propri di tutte le collezioni<br />

• Add: aggiunge un item alla collezione (in questo<br />

caso un parametr)<br />

• Item: consente di riferirsi a un particolare<br />

elemento della collcection (con il nome)<br />

• Insert: inserisce un item<br />

• Remove: rimuove un item<br />

• Clear: svuota tutta la collection<br />

Inf. Med. - 6. Query - A.A. 2013/14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!