10

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

我正在使用 VS2008,因此 Compact Edition DB 似乎是一个自然的选择。我曾希望只换掉我的连接字符串,但似乎它只会让我使用 SqlCeConnection 而不是 SqlConnection 连接到 CE 数据库。有什么办法可以解决这个问题,我可以在连接字符串中使用修饰符吗?

4

3 回答 3

8

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

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

于 2009-04-27T11:37:39.703 回答
6

是的,您可以通过引用基类来使用 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 之间的差异,因为它并不相同。

于 2012-12-04T14:41:48.530 回答
2

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

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

于 2009-04-27T11:47:45.827 回答