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