9

Nov

Demo 2 – Accesso ai dati in Windows Mobile (Parte 1)

Cosa stiamo per fare

  1. Creare un Database SQL Server Compact da Visual Studio
  2. Aggiungere una tabella e qualche dato campione
  3. Visualizzare la griglia dati relativa alla tabella in un form Mobile

Creazione del DB

Per fare ciò non servono particolari prerequisiti, se non quelli visti nella Demo 1. Sappiate solo che il Database è solo UNO dei modi in cui possiamo salvare i dati nelle nostre applicazioni Mobile e sicuramente non il migliore. Il migliore dipende sempre dalle vostre necessità: per esempio per salvare 10 righe di dati è utile considerare un semplice file piuttosto che un DB come SQL Compact che, seppur carino, introduce un certo overhead dovuto logicamente, alle operazioni SQL + quelle sul file system e quelle sulla memoria per caricare le librerie di accesso ai dati.

Quindi, bando alle ciance, creiamo un nuovo progetto Mobile e, nella root, aggiungiamo un nuovo Database:

image

image

Visual Studio, quando diremo “add” al solito ci mostrerà un Wizard, per evitarci la fatica di creare un Dataset più tardi. Tuttavia, solo per questa volta :), gli diremo di no e annulleremo il wizard.

Quindi ora abbiamo un DB vuoto nel progetto. Non ci resta che creare la tabella che ci interessa.

 

 

Aggiunta della tabella

image Quando si aggiunge un DB e VS se ne accorge (tipicamente proponendo il Wizard di prima), nel Server Explorer appare la connessione a tale database (come in figura a SX).

 

 

 

A questo punto possiamo, in via grafica, creare la tabella che ci interessa con i seguenti passaggi:

  • Tasto DX su Tables => Create Table
  • Modifica della tabella

image

image

E’ chiaro che la mia tabella avrà tre campi:

  • Un ID intero autoincrementale e chiave primaria
  • Un Nome varchar
  • Un Cognome varchar

Per popolare la tabella possiamo cliccare con destro sulla tabella  e fare Show Table Data image

E a questo punto, aggiungiamo in dati dalla griglia

image

Io poi premo la ! di Execute per dargli una senso di brutale Commit… Non ho idea se serva o no, diciamo che io lo faccio da tempo come segno tradizionale, più che come requisito.

Visualizzare la Griglia

La potenza dei controlli DataBound esula dagli obiettivi di queste Demo, che invece sono incentrate sull’infarinatura tecnica e la prova tangibile immediata degli strumenti di VS (ahah, carina è? un modo come un altro per dire che non so una mazza sulla teoria che ne sta dietro :)).

Comunque, a parte gli scherzi, ora farebbe comodo un bel Dataset, come quello che VS voleva farci fare prima con quel simpatico Wizard. Ora invece, ce lo dobbiamo fare da soli, aumentando i click necessari da 3 a 4-5. Prima cosa, aggiungiamo un dataset vuoto alla nostra soluzione (evito un’ennesimo screenshot, basta fare tasto destro sulla root, add item e scegliere Dataset). Dategli un nome a piacere e poi apritelo, si presenterà così:

image

A questo punto vedete ancora sulla sinistra, nel Server Explorer, il database aggiunto? e la tabella creata? Se si, trascinate la tabella sul Dataset vuoto e…. magia!

Il risultato è fantascienza. Cosa ha veramente fatto Visual Studio in questa banale operazione di DragNDrop?

  • Intanto ha creato una stringa di connessione al database, evitando a noi il triste peso di costruircela.
  • Poi ha creato un maxi file xsd in cui ha definito lo schema xsd corrispondente alla tabella SQL (e già questo non è banale)
  • image Poi ha creato un TableAdapter per ogni tabella trascinata… e cos’è un tableadapter?
    • è una classe C# che wrappa al suo interno una caterva di funzionalità per accedere ai dati della tabella, modificarli e interrogarli, il tutto passando da un layer di astrazione realizzato in XML (a questo serviva l’XSD)
    • Ovviamente, il tutto è fortemente tipizzato, il che significa che una DataRow della table adapter appena creata sarà una oggetto che avrà proprietà SPECIFICHE per accedere ai campi colonna della tabella e non generiche. Ad esempio, in questo caso, avrà creato oggetti tali per poter accedere al campo ID o Nome semplicemente usando la proprietà fortemente tipizzata DataRow.ID o DataRow.Nome di tipo intero o stringa.

Non credo di essere stato al massimo esplicativo, ma conto che capirete il tutto nella demo apposita riguardante l’accesso LINQ ad un dataset tipizzato.

Ora divertiamoci, per primo: aggiungiamo una griglia al form e “dockiamola”.

image

Poi nella proprietà DataSource, facciamo così:

image

E clicchiamo sulla tabella che ci interessa. A questo punto lui penserà un pò, creerà il binding e la form, già in fase di progettazione, si modellerà in base alla struttura della tabella target.

Ora F5 e abbiamo finito.

image

by Roberto Freato on 11/9/2009
Post archive