使用SQLConnection连接到SQL CE db

非常直截了当的问题。 我正在构建一个从SQL Server 2005实例读取数据的应用程序。 我想在我的笔记本电脑上运行一些测试(没有SQL 2005)所以我正在考虑在本地数据库中交换以进行测试。

我正在使用VS2008,因此Compact Edition DB似乎是一个自然的选择。 我原本希望换掉我的连接字符串,但似乎它只能让我使用SqlCeConnection而不是SqlConnection连接到CE数据库。 任何方式,我可以在连接字符串中使用修饰符?

通过仅修改配置参数,实际上很有可能使用SQL CE而不是完整的SQL Server:更改连接字符串并尽可能使用IDbXXX系列接口,而不是特定于平台的SqlXXXSqlCeXXX 。 请参阅DbProviderFactories 。

但是,请注意这两个平台的SQL方言的差异。

是的,您可以通过引用基类来使用SQL Compact和/或SQL Server。 例如:

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

连接字符串需要指向SQL Compact的数据文件,例如: "Data Source=urData.sdf;Persist Security Info=False;" 。 这里有更多例子 。

此链接将解释SQL Server和SQL Compact之间存在哪些差异 ,因为它们并不完全相同。

数据库所需的所有SQL相关对象都从基础抽象Db …inheritance(即DbConnection,DbDataAdapter等…)。 因此,您可以编写某种类型的DatabaseManager类,在实例化时需要知道您是在处理Sql还是Sql Ce。 然后,从那时起,你只处理基类对象(DbConnection等..)。 这样,您每次都需要更改的是经理类的实例化。

这样做的另一个好处是,如果您以后决定完全切换到另一个提供商,则不需要更改代码。