Gestione DataBinding Pocket PC 2003 - Sql Server 2005 Compact Ediction

Ho giocato un pò, tanto per vedere come funzionava il DataBinding di Sql Server 2005 Compact Ediction.

Per poter sviluppare per PDA teoricamente è sufficiente il Compact framework, invece nella realtà senza Visual Studio è praticamente impossibile.

Si comincia con il creare un nuovo progetto Smart Device Application

Si aggiunge al progetto un nuovo elemento, il database (.sdf)

Il wizard a questo punto apre la finestra di selezione ma ... visto che il database è vuoto (altrimenti se scegliete elemento esistente allora proseguite) io ho terminato il wizard.

Si va nella definizione del database che è visibile sul Server Explorer e si definisce la struttura dei dati.

Terminata la definizione della struttura è possibile aggiungere un nuovo DataSet al progetto

A questo punto si trascinano le tabelle  dal Server Explorer sulla definizione del file xsd.

La ricompilazione del progetto consente di far apparire nella toolbar il DataSet tipizzato e un TableAdapter per ogni DataTable mappata.

Questi oggetti si trascinano nella form del progetto.

Successivamente si possono posizionare i controlli dalla casella degli strumenti.

Su CF non esiste DataGridView nè BindingNavigator per cui è necessario inserire un menuitem, bottone per qualsiasi azione.

Il DataGrid del Compact Framework non è editabile ma può benissimo utilizzato per visualizzare i dati e per la Navigazione.

Alcuni appunti sul codice:

All'apertura della Form ho attivato un metodo che attiva la Fill del DataSet

private void MainForm_Load(object sender, EventArgs e) { this.datiDataSet1.tableprova.Columns["id"].AutoIncrementSeed = 1; CaricaDati(); if (this.datiDataSet1.tableprova.Rows.Count == 0) { System.Data.SqlServerCe.SqlCeConnection cn = new System.Data.SqlServerCe.SqlCeConnection(this.tableprovaTableAdapter1.Connection.ConnectionString); System.Data.SqlServerCe.SqlCeCommand cm = new System.Data.SqlServerCe.SqlCeCommand("INSERT INTO tableprova (Descrizione, Valore) VALUES(@P1, @P2)", cn); System.Data.SqlServerCe.SqlCeParameter prm = new System.Data.SqlServerCe.SqlCeParameter(); prm.DbType = System.Data.DbType.String; prm.SourceColumn = "Descrizione"; prm.ParameterName = "@p1"; cm.Parameters.Add(prm); prm = new System.Data.SqlServerCe.SqlCeParameter(); prm.ParameterName = "@p2"; prm.SourceColumn = "id"; prm.DbType = System.Data.DbType.Double; cm.Parameters.Add(prm); try { cn.Open(); for (int x = 1; x < 11; x++) { cm.Parameters["@p1"].Value = "Descrizione " + x.ToString(); cm.Parameters["@p2"].Value = x * 1000 + x / 100; cm.ExecuteNonQuery(); } } catch (Exception ex) { } finally { if (cn.State == System.Data.ConnectionState.Open) { cn.Close(); } } CaricaDati(); } }

Essendo troppo pigro per inserire dati manuali ho attivato un nuovo Command per inserire 10 righe in caso il DataSet fosse vuoto (okkio di non fare la stessa cosa in produzione!).

La verità era invece che volevo mostrare la gestione e l'inserimento dei parametri (pardon SqlCeParameter) che è del tutto uguale alla gestione di SqlParameter.

E' sempre meglio utilizzare questa forma di gestione dei Command, utilizzare i parametri vuol dire risparmiare quando si va in produzione, se lo si fa anche sugli esempi si assume un atteggiamento mentale "giusto" verso una corretta gestione dei parametri.

L'inserimento di nuove righe si attiva semplicemente aggiungendo una nuova riga vuota al BindingSource:

this.bindingSource1.AddNew();

La cancellazione di una riga:

if ((bindingSource1.Current != null)) { this.bindingSource1.RemoveCurrent(); } else { MessageBox.Show("Cancellazione impossibile"); }

Ovviamente per cancellare è necessario verificare prima che ci sia una riga da cancellare!

L'invio degli aggiornamenti:

 

this.bindingSource1.EndEdit(); this.tableprovaTableAdapter1.Update(this.datiDataSet1.tableprova);

Riferimenti

Esempio C#
Esempio VB.NET

Print | posted on giovedì 6 settembre 2007 17:04

Feedback

# [MsSQL]Microsoft SQL Server Management Studio Express - MasterDrive.it - Information Technology Developers Community

Left by Pingback/TrackBack at 18/06/2007 13:37
Gravatar [MsSQL]Microsoft SQL Server Management Studio Express - MasterDrive.it - Information Technology Developers Community

# re: Gestione DataBinding Pocket PC 2003 - Sql Server 2005 Compact Ediction

Left by Giovanni Quilici at 15/07/2008 16:45
Gravatar Sto tentando di realizzare un meccanismo di sincronizzazione tra un db SQL Compact Ed. su palmare ed uno MSAccess su desktop.
Da palmare funziona egragiamente, ma da desktop non riesco a "vedere" il db su palmare.

Data Source=\\Programmi\\Mobile\\mydb.sdf;Password=Pippo;

Qual'e' la stringa di connessione giusta??

# re: Gestione DataBinding Pocket PC 2003 - Sql Server 2005 Compact Ediction

Left by Luciano Bastianello at 16/07/2008 01:00
Gravatar Ti consiglio di postare questa domanda nel forum apposito di vbt&t, troverai sicuramente chi ti risponderà.
Purtroppo non ho proprio tempo.

Your comment:





 
Please add 4 and 4 and type the answer here:

Copyright © Luciano Bastianello

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski