很直接的问题。我正在构建一个从 SQL Server 2005 实例读取数据的应用程序。我想在我的笔记本电脑(没有 SQL 2005)上运行一些测试,所以我正在考虑在本地数据库中进行交换以进行测试。
我正在使用 VS2008,因此 Compact Edition DB 似乎是一个自然的选择。我曾希望只换掉我的连接字符串,但似乎它只会让我使用 SqlCeConnection 而不是 SqlConnection 连接到 CE 数据库。有什么办法可以解决这个问题,我可以在连接字符串中使用修饰符吗?
很直接的问题。我正在构建一个从 SQL Server 2005 实例读取数据的应用程序。我想在我的笔记本电脑(没有 SQL 2005)上运行一些测试,所以我正在考虑在本地数据库中进行交换以进行测试。
我正在使用 VS2008,因此 Compact Edition DB 似乎是一个自然的选择。我曾希望只换掉我的连接字符串,但似乎它只会让我使用 SqlCeConnection 而不是 SqlConnection 连接到 CE 数据库。有什么办法可以解决这个问题,我可以在连接字符串中使用修饰符吗?
实际上很可能通过仅修改配置参数来使用 SQL CE 而不是成熟的 SQL Server:更改连接字符串并IDbXXX
尽可能使用系列接口而不是特定于平台的SqlXXX
接口SqlCeXXX
。请参阅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...(即 DbConnection、DbDataAdapter 等...)。因此,您可以编写某种 DatabaseManager 类,在实例化时需要知道您是在处理 Sql 还是 Sql Ce。然后,从那时起,您只需处理基类对象(DbConnection 等)。这样,您每次只需要更改经理类的实例即可。
这样做的另一个好处是,如果您以后决定完全切换到另一个提供程序,则不需要更改太多代码。