2009-04-27 68 views
8

非常簡單的問題。我正在構建一個從SQL Server 2005實例讀取數據的應用程序。我想在我的筆記本電腦上運行一些測試(它沒有SQL 2005),所以我正在考慮換用本地數據庫來進行測試。使用SQLConnection連接到SQL CE db

我正在使用VS2008,所以Compact Edition DB似乎是一個自然的選擇。我曾希望換掉我的連接字符串,但似乎它只會讓我連接到CE數據庫使用SqlCeConnection而不是SqlConnection。任何解決這個問題的方法,我可以在連接字符串中使用修飾符?

回答

7

它實際上是非常可能的用戶SQL CE,而不是全面的SQL Server將只修改配置參數:改變連接字符串並使用IDbXXX家庭界面儘可能代替特定於平臺的SqlXXXSqlCeXXX的。請參閱DbProviderFactories

但是,請注意這兩個平臺的SQL方言的差異。

+0

正是我一直在尋找的感謝。工作一種享受。 – TygerKrash 2009-04-27 13:00:10

+1

你知道一個很好的鏈接,突出「方言的差異」?如果有一個頁面列出了它不支持SQL Server中存在的主要內容,那將非常有用。 – noelicus 2012-12-04 09:33:01

1

所有與DB相關的SQL相關對象都需要從基本抽象Db繼承(即DbConnection,DbDataAdapter等)。因此,您可以編寫某種DatabaseManager類,在實例化時需要知道您是在處理Sql還是Sql Ce。然後,從這一點開始,您只需處理基類對象(DbConnection等)。那樣,每一次你需要改變的就是你的經理級別的實例化。

這樣做的另一個好處是,如果您稍後決定完全切換到另一個提供程序,則不需要更改很多代碼。

4

是的,您可以通過引用基類來使用SQL Compact和/或SQL Server。例如:

IDbConnection Connection; 

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

的連接字符串需要在對SQL精簡你的數據文件,以點帶面,例如:"Data Source=urData.sdf;Persist Security Info=False;"。更多examples here

此鏈接將解釋什麼differences there are between SQL Server and SQL Compact,因爲它不相同。