Pregunta

C # WinForms .Net 3.5 a SQL CE 3.5 en el dispositivo Mobile 6.1

Me gustaría hacer una conexión desde una aplicación de escritorio a una base de datos SDF en mi dispositivo Windows Mobile mientras está conectada a través de ActiveSync. Visual Studio me permite crear una conexión de datos a mi dispositivo. Las conexiones de las pruebas son correctas y puedo ver los datos en la base de datos utilizando Visual Studio.

Luego creo un formulario e intento llenar un DataGridView. Cuando ejecuto el programa recibo un error que indica que la ruta a la base de datos no es válida.

¿Cómo se supone que debo especificar la ruta del dispositivo móvil en la cadena de conexión?

En mi App.Config, he intentado variaciones en la ruta, pero ninguna de ellas funciona:

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 sección de la cadena de conexión completa se ve así:

<connectionStrings>
    <add name="SqlCeViaActiveSync.Properties.Settings.OrdersConnectionString"
        connectionString="Data Source=Mobile Device\Program Files\SqlCeViaActiveSync\Orders.sdf"
        providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>

Además, hice una referencia a Microsoft.SqlServerCe.Client, ya que encontré algunos artículos que mencionaron que era necesario.

¿Puede alguien indicarme algunos artículos / muestras recientes o hacerme saber qué estoy haciendo mal?

¡Gracias!

¿Fue útil?

Solución

Acabo de encontrar que funciona lo siguiente:

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();

No era exactamente lo que estaba buscando pero funcionará para esta aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top