2009-04-27 55 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,因为它不相同。