Come posso connettermi a SDF su un dispositivo mobile dall'applicazione desktop?
-
06-07-2019 - |
Domanda
C # WinForms .Net 3.5 a SQL CE 3.5 su dispositivo Mobile 6.1
Vorrei effettuare una connessione da un'applicazione desktop a un database SDF sul mio dispositivo Windows Mobile mentre è connesso tramite ActiveSync. Visual Studio mi consente di creare una connessione dati al mio dispositivo. I test delle connessioni vanno bene e posso visualizzare i dati nel database usando Visual Studio.
Quindi creo un modulo e provo a compilare un DataGridView. Quando eseguo il programma, viene visualizzato un messaggio di errore che indica che il percorso del database non è valido.
Come devo specificare il percorso del dispositivo mobile nella stringa di connessione?
Nel mio App.Config, ho provato varianti sul percorso, ma nessuna di esse funziona:
connectionString="Data Source=Mobile Device\Program Files\SqlCeViaActiveSync\Orders.sdf"
connectionString="Data Source=\Mobile Device\Program Files\SqlCeViaActiveSync\Orders.sdf"
connectionString="Data Source=Program Files\SqlCeViaActiveSync\Orders.sdf"
connectionString="Data Source=\Program Files\SqlCeViaActiveSync\Orders.sdf"
La sezione della stringa di connessione completa è simile alla seguente:
<connectionStrings>
<add name="SqlCeViaActiveSync.Properties.Settings.OrdersConnectionString"
connectionString="Data Source=Mobile Device\Program Files\SqlCeViaActiveSync\Orders.sdf"
providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
Inoltre, ho fatto riferimento a Microsoft.SqlServerCe.Client, poiché ho trovato alcuni articoli che menzionavano che era necessario.
Qualcuno può indicarmi alcuni articoli / campioni recenti o farmi sapere cosa sto facendo di sbagliato?
Grazie!
Soluzione
Ho appena scoperto che funziona come segue:
SqlCeConnection conn = new SqlCeConnection(@"Data Source='Mobile Device\Program Files\SqlCeViaActiveSync\Orders.sdf';");
conn.Open();
using (SqlCeTransaction trans = conn.BeginTransaction())
{
using (SqlCeCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT [OrderNumber] FROM [Orders];";
trans.Commit();
SqlCeDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
this.listBox1.Items.Add((string)dr["OrderNumber"]);
}
MessageBox.Show(dr.RecordsAffected.ToString());
}
}
conn.Close();
Non era esattamente quello che stavo cercando, ma funzionerà per questa applicazione.