giovedì 23 agosto 2007

Una semplice applicazione con Visual Express e Sql Server 2005 Express

Come noto la serie Express 2005 può utilizzare come fonte per il design grafico dell'interfaccia ai solo Access (2007 escluso) e Sql Express 2005.

Ovviamente come qualsiasi altra applicazione .NET "da codice" è possibile connettere qualsiasi database che disponga di una interfaccia utilizzabile da .NET.

Questo esempio dimostra come si può utilizzare Visual Express 2005 per disegnare la propria applicazione con Sql Server 2005.

Il tutto parte con la consueta creazione di un nuvo progetto Windows Forms.
Prendiamo il nostro database Sql Server (mdf) e facciamo copia-incolla sul progetto (si proprio nel progetto), se abbiamo deciso di utilizzare Access questo è il momento per farlo!.

Dopo le prime prove, quando il collegamento al database funziona, ricordarsi di togliere la copia ad ogni compilazione sulle proprietà del database.

La copia del database sul progetto fa scattare il wizard che disegna il file xsd per la definizione del DataSet tipizzato.

Scegliamo la table Customers

E .. ovviamente premiamo Fine.
Successivamente compiliamo il nostro progetto per dar modo al Designer di aggiungere gli oggetti DataSet e TableAdapter generati dal Wizard tra i controlli personalizzati.

Tra i controlli disponibili selezioniamo ed aggiungiamo alla nostra form un controllo BindingSource e lo configuriamo nel seguente modo


Questo determina l'aggiunta del customersTableAdapter e del dataset.
Il controllo BindingSource è dedicato al mantenimento del collegamento tra la fonte dati locale (dataset) e i controlli a video.
Aggiuntiamo anche un controllo BindingNavigator, questo controllo consente di gestire le varie azioni che si possono intraprendere sui dati come lo spostamento del puntatore della riga corrente, l'aggiunta e l'eliminazione di righe dal dataset.
Alla fine dovremmo avere gli oggetti:

Impostiamo le sue proprietà:

Aggiungiamo un controllo Label e due TextBox
Proprietà per la IdTextBox

Proprietà per nameTextBox

Aggiungiamo anche un controllo DataGridView
Proprietà per il controllo dataGridView1:


Il controllo BindingNavigator non aggancia i comandi per l'aggiornamento del database, nè per la ricarica del dataset dal database, ho aggiunto pertanto due Button e le relative immagini, la form nell'IDE diventa simile a questa (gli ultimi due Button sul BindingNavigator sono quelli aggiunti):

Compiliamo ed eseguiamo il progetto, non dovrebbero esserci problemi o errori perchè non abbiamo ancora aggiunto una riga di codice.

I Button aggiunti ancora non funzionano vero?, infatti BindingNavigator si è agganciato alla DataTable ed è in grado di fare "da solo" navigazione, aggiunta e cancellazione righe (i comandi sono "embedded" nel controllo).
Invece i "miei" Button devono essere configurati e gestiti.
Facendo il doppio click creiamo due nuovi gestori di evento click uno per il riciclo, l'altro per il savataggio dei dati.

Salvataggio dati

Il comando preposto per il savataggio dati e l'aggiornamento nell'origine dati è l'update del DataAdapter, nel nostro caso il comando è esposto "specializzato" per il DataSet tipizzato / tabella Customers dal customerTableAdapter per cui nell'evento del salvataggio dati inseriamo:

C#
// update del dataset e aggiornamento del database
this.bindingSource1.EndEdit();
this.customersTableAdapter.Update(this.nORTHWNDDataSet.Customers);

VB.NET
Me.BindingSource1.EndEdit()
Me.CustomersTableAdapter.Update(Me.NORTHWNDDataSet.Customers)

Ricarica dati

C#
// refill del dataset
this.nORTHWNDDataSet.Customers.Rows.Clear();
this.customersTableAdapter.Fill(this.nORTHWNDDataSet.Customers);

VB.NET
Me.NORTHWNDDataSet.Customers.Rows.Clear()
Me.CustomersTableAdapter.Fill(Me.NORTHWNDDataSet.Customers)

A questo punto il nostro progetto è del tutto funzionante, per una configurazione standalone con Sql Express locale va più che bene, il database, a partire dalla cartella bin verra "attaccato" al server e scollegato alla chiusura dell'applicazione (User Instance).

Per lavorare invece con Sql Server mediante il servizio Server è necessario apportare delle variazioni al Setting (si trova tra le proprietà del progetto):

Ovviamente al posto di CYANO (il mio Windows 2003 Server) dove gira Sql Server 2005 dovrete mettere il vostro server :)).
Consiglio di fare come ho fatto io, ho aggiunto una nuova stringa in cui ho salvato la stringa originale prima di modificare la stringa di connessione.

Esempio realizzato con Visual C# Express
Esempio realizzato con Visual Basic Express

1 commento:

Anonimo ha detto...

Perche non:)