2009-04-27 15 views
8

Domanda abbastanza semplice. Sto costruendo un'app che legge i dati da un'istanza di SQL Server 2005. Volevo eseguire alcuni test sul mio laptop (che non ha SQL 2005), quindi stavo guardando lo swapping in un database locale ai fini dei test.Connessione a SQL CE db utilizzando SQLConnection

Sto usando VS2008 quindi il DB Compact Edition sembrava una scelta naturale. Speravo di sostituire la mia stringa di connessione, ma a quanto pare mi permetterà di connettermi al database CE usando SqlCeConnection e non SqlConnection. In ogni modo, i modificatori che posso usare nella stringa di connessione, forse?

risposta

7

In realtà è molto possibile utente SQL CE anziché conclamata SQL Server parametri di configurazione unica modifica: stringa di connessione di modifica e utilizzare IDbXXX interfacce familiari ove possibile, invece di SqlXXX e SqlCeXXX quelli specifici della piattaforma. Vedi DbProviderFactories.

Si consiglia, tuttavia, di differenze nei dialetti SQL di queste due piattaforme.

+0

esattamente quello che stavo cercando grazie. funziona a meraviglia – TygerKrash

+1

Conoscete un link valido che evidenzia le "differenze nei dialetti"? Sarebbe davvero utile se ci fosse una pagina che elenca le cose principali che non supporta che sono presenti in SQL Server. – noelicus

1

Tutti gli oggetti relativi a SQL necessari per entrambi i DB ereditano dal Db astratto di base (ad esempio DbConnection, DbDataAdapter ecc.). È quindi possibile scrivere una sorta di classe DatabaseManager che, una volta istanziata, deve sapere se si ha a che fare con Sql o Sql Ce. Quindi, da quel momento in poi, gestisci solo gli oggetti della classe base (DbConnection ecc.). In questo modo, tutto ciò che devi modificare ogni volta, è l'istanziazione della tua classe manager.

Un altro vantaggio nel farlo in questo modo è se in seguito si decide di passare a un altro provider del tutto, non è necessario modificare molto codice.

4

Sì, è possibile utilizzare SQL Compact e/o SQL Server facendo invece riferimento alle classi di base. Per esempio:

stringa
IDbConnection Connection; 

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

Il collegamento deve puntare al file di dati per SQL Compact, per esempio: "Data Source=urData.sdf;Persist Security Info=False;". Più examples here.

Questo collegamento spiegherà cosa differences there are between SQL Server and SQL Compact, in quanto non è identico.

+0

Grazie per le informazioni extra sulle differenze dialettali, è utile. Penso che il codice di esempio funzionerà anche, ma non è altrettanto pulito (dovendo fare riferimento a tipi di connessione CE) come evitare riferimenti di classe espliciti e utilizzare le fabbriche di DbProvider e utilizzare la configurazione per gestire il tipo di connessione (come per la risposta selezionata). – TygerKrash

Problemi correlati