SubSonic Resource Center

Un po' di codice: l'oggetto Query

Introduzione
In quest'articolo esamineremo l'oggetto Query, che ci consentirà di risolvere la quasi totalità di necessità relative alle interrogazioni sui dati.


Requisiti
Tutti i software qui elencati sono gratuiti.

Microsoft Visual Web Developer 2008 Express (va bene anche la versione 2005).
Link: http://www.microsoft.com/express/download/

Microsoft SQL Server 2005 Express.
Link: http://www.microsoft.com/express/sql/download/default.aspx

Microsoft SQL Server Management Studio Express (facoltativo).
Link: http://www.microsoft.com/express/sql/download/default.aspx

Subsonic (versione attuale: 2.1.0 beta 1).
Link: http://www.codeplex.com/subsonic/Release/ProjectReleases.aspx?ReleaseId=10395


Codice di esempio allegato
E' possible scaricare a questo link il codice di esempio allegato all'articolo.


Premessa
Fino alla versione 2.0.3 Subsonic non supporta le join tra tabelle. Ok, niente panico. Questa caratteristica (assieme a molte altre) è supportata a partire dalla versione 2.1, attualmente ancora in beta. Per il momento tralasceremo queste nuove funzionalità, che saranno oggetto di discussione di un prossimo articolo.


Creazione dell'oggetto Query
Per la creazione dinamica di costrutti SQL per interrogare la base dati Subsonic mette a disposizione l'oggetto Query. Per la creazione dell'oggetto è fornito il metodo "CreateQuery". Ecco un esempio:

Subsonic.Query QDati = Ordini.CreateQuery();

In alternativa è possibile creare l'oggetto passando come parametro il nome della tabella o lo schema:

Subsonic.Query QDati = new Subsonic.Query(Ordini.TableName);

Subsonic.Query QDati = new Subsonic.Query(Ordini.GetTableSchema());


Esecuzione dell'oggetto Query
Il metodo "Execute" consente di eseguire la query e non restituisce nulla:

QDati.Execute();

Il metodo "ExecuteDataset" restituisce un dataset:

GridView1.DataSource = QDati.ExecuteDataset();

Il metodo "ExecuteReader" restituisce un datareader:

GridView1.DataSource = QDati.ExecuteReader();

Il metodo "ExecuteScalar" restituisce un singolo valore:

Label1.Text = QDati.ExecuteScalar().ToString();


Filtri e ordinamenti
La proprietà "SelectList" è utilizzata per limitare il numero di campi da considerare nell'estrazione dei dati. Vediamo la struttura delle tabelle:

 
Ecco un esempio di utilizzo della "SelectList":

myQuery.SelectList = ss_ita_demo.Prodotti.Columns.Descrizione + "," + ss_ita_demo.Prodotti.Columns.UnitsInStock;

Il metodo "AddWhere" consente di inserire una condizione nella query. Vediamo un esempio di utilizzo:

myQuery.AddWhere(ss_ita_demo.Prodotti.Columns.UnitsInStock, SubSonic.Comparison.Equals, 300);

Allo stesso modo possiamo utilizzare il metodo "AddBetweenValues" per estrarre i dati che rientrano in un determinato intervallo:

myQuery.AddBetweenValues(ss_ita_demo.Prodotti.Columns.UnitsInStock, 200, 300);

Risulta altrettanto semplice assegnare un ordinamento tramite il metodo "OrderBy".
Ordinamento ascendente:

myQuery.OrderBy = SubSonic.OrderBy.Asc(ss_ita_demo.Prodotti.Columns.Descrizione);

Ordinamento discendente:

myQuery.OrderBy = SubSonic.OrderBy.Desc(ss_ita_demo.Prodotti.Columns.Descrizione);

Per limitare il numero di record che la query restituisce esiste la proprietà "Top". Ecco un esempio:

myQuery.Top = "5";

E' possibile gestire la paginazione tramite le proprietà "PageIndex" e "PageSize". Un esempio di utilizzo è riportato nel codice allegato all'articolo. Nel caso specifico, è stato creato un vero e proprio controllo che estende la GridView integrando la paginazione con tutti i pulsanti e le indicazioni necessarie.


Funzionalità particolari
Il metodo dell'oggetto query "GetCount"consente di ottenere il numero di record estratti. Ecco un esempio di utilizzo:

int num = myQuery.GetCount(ss_ita_demo.Prodotti.Columns.Descrizione);

Il metodo "GetSql" consente di mostrare a video l'istruzione SQL utilizzata dalla query per estrarre i dati. Ecco un esempio:

lDati.Text = myQuery.GetSql();


Conclusioni
In questo articolo abbiamo visto l'utilizzo dell'oggetto Query come strumento per effettuare interrogazioni sui dati. In futuro, non appena la versione 2.1 di Subsonic uscirà dalla fase di beta, verrà rilasciato un articolo con le nuove caratteristiche dell'oggetto Query.



  Pagina 1 di 1


<< September 2010 >>
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30  

ultimi inserimenti

archivi

informazioni

  • Numero di visite: 

salta a...

Youngportal community  Omniaproject  Open asp.net  Forum  Rss feed