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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top