2009-04-27 18 views
8

Pregunta bastante simple. Estoy construyendo una aplicación que lee datos de una instancia de SQL Server 2005. Quería ejecutar algunas pruebas en mi computadora portátil (que no tiene SQL 2005), así que estaba buscando el intercambio en una base de datos local para el propósito de las pruebas.Conexión a SQL CE db con SQLConnection

Estoy usando VS2008 por lo que el Compact Edition DB parecía una elección natural. Esperaba simplemente cambiar mi cadena de conexión, pero parece que solo me permitirá conectarme a la base de datos de CE usando SqlCeConnection y no SqlConnection. De todos modos, ¿qué modificadores puedo usar en la cadena de conexión?

Respuesta

7

De hecho, es muy posible SQL CE usuario en lugar de en toda regla de SQL Server sólo se modifican los parámetros de configuración: Cambio de cadena de conexión y el uso de interfaces de IDbXXX siempre que sea posible en lugar de SqlXXX y SqlCeXXX los específicos de la plataforma de la familia. Ver DbProviderFactories.

Tenga en cuenta, sin embargo, las diferencias en los dialectos SQL de estas dos plataformas.

+0

exactamente lo que estaba buscando gracias. funciona un placer – TygerKrash

+1

¿Conoces un buen enlace que destaque las "diferencias en dialectos"? Sería realmente útil si hubiera una página que enumera cosas importantes que no soporta que están presentes en SQL Server. – noelicus

1

Todos los objetos relacionados con SQL que necesita para que DB herede del Db base ... (es decir, DbConnection, DbDataAdapter etc ...). Por lo tanto, puede escribir algún tipo de clase de DatabaseManager que, cuando se crea una instancia, necesita saber si se trata de Sql o Sql Ce. Luego, a partir de ese momento, se ocupa solo de los objetos de la clase base (DbConnection, etc.). De esa manera, todo lo que necesita cambiar cada vez, es la instanciación de su clase de administrador.

Otra ventaja de hacerlo de esta manera es que, si más adelante decide cambiarse a otro proveedor, no necesita cambiar mucho código.

4

Sí, puede utilizar SQL Compact y/o SQL Server consultando en su lugar las clases base. Por ejemplo:

cadena
IDbConnection Connection; 

if (Compact) 
    Connection = new SqlCeConnection(); 
else 
    Connection = new SqlConnection(); 

La conexión tiene que apuntar a su archivo de datos para SQL compacto, por ejemplo: "Data Source=urData.sdf;Persist Security Info=False;". Más examples here.

Este enlace explicará qué differences there are between SQL Server and SQL Compact, ya que no es idéntico.

+0

Gracias por la información adicional sobre las diferencias del dialecto, eso es útil. Creo que el código de ejemplo también funcionará, pero no es tan limpio (teniendo que explicitar los tipos de conexión CE) como evitar referencias explícitas de clase y usar fábricas DbProvider y usar la configuración para administrar el tipo de conexión (según la respuesta seleccionada)) – TygerKrash

Cuestiones relacionadas