22

Dec

AD – Demo 2 – DataReader

In questa demo vedremo di utilizzare la query scritta nel SQL Management Studio, nella demo precedente, per estrapolare i dati dal SQL Server attraverso ADO.NET e quindi, una applicazione .NET.

Per fare quello che ci serve non abbiamo bisogno di interfaccia grafica e opteremo quindi per la creazione di un programma Console.

Primo Step: Creazione del progetto

In Visual Studio faremo click su File –> New –> Project. A questo punto lasciamo pure il framework 3.5 (tanto non è rilevante per il momento prendere particolari precauzioni) e scegliamo un progetto Windows –> Console Application (come da figura)

image

A questo punto Visual Studio ci creerà la struttura di progetto contenente un file Program.cs che sarà l’entry point del nostro programma. Scriveremo qui dentro tutto, in barba alla programmazione OO tanto, è una demo!

Secondo Step: Procuriamoci la connectionString

image Un trucco per procurarsi la connection string in modo veloce è fare una connessione al database che vogliamo tramite il server explorer di VS, poi andare nelle properties della connessione (a sinistra). A questo punto copiate negli appunti la lunga e noiosa connection string.
NB: la CS è il punto nevralgico dell’accesso al database perciò, esclusa questa demo, non va mai inserita hard-coded all’interno dei vostri programmi.

Terzo Step: il codice

Per utilizzare ADO.NET bisogna aprire una connection a SQL con l’oggetto SqlConnection, che in pasto al costruttore si prende la CS prima ottenuta.

PASSO IMPORTANTE: Apriamo la connessione!

Poi con il SqlCommand definiamo il comando da spedire al database e la sua tipologia (in questo caso è un comando SQL, quindi la property corrisponde a Text). A questo punto possiamo eseguire il comando, attenzione:

  1. ExecuteReader => il comando restituisce resultset
  2. ExecuteScalar => il comando restituisce solo un valore (tipicamente un risultato di qualche operatore aggregato di SQL)
  3. ExecuteNonReader => il comando fa una Update, una Delete o una Insert, e ritorna il numero di righe coinvolte nell’operazione.

Poi non ci resta che ciclare il SqlDataReader risultante con il metodo Read (che oltre che dirci se ci sono ancora righe, avanza anche la posizione alla prossima) e con il metodi GetX (dove X è il tipo dati da ottenere).

Questo quindi è il codice per connettersi al database ed eseguire la query con il “like” che avevamo usato nella Demo 1:

image

Nota: Lo sleep serve solo per far sembrare che i risultati sparati a console vengano caricati “con calma”, altrimenti sarebbero tutti scritti istantaneamente. La read finale serve per evitare che la console si chiuda troppo presto, cioè prima che ci si renda conto dell’output.

by Simona Cossidente on 12/22/2009