使用 SQLConnection 连接到 SQL CE 数据库

Posted

技术标签:

【中文标题】使用 SQLConnection 连接到 SQL CE 数据库【英文标题】:Connecting to SQL CE db using SQLConnection 【发布时间】:2009-04-27 11:32:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你知道突出“方言差异”的好链接吗?如果有一个页面列出了 SQL Server 中不支持的主要内容,那将非常有用。【参考方案2】:

是的,您可以通过引用基类来使用 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;"。更多examples here.

此链接将解释 differences there are between SQL Server and SQL Compact 的含义,因为它并不相同。

【讨论】:

感谢您提供有关方言差异的额外信息,这很有用。我认为示例代码也可以工作,但不如避免显式类引用和使用 DbProvider 工厂以及使用配置来管理连接类型那样干净(必须明确引用 CE 连接类型)(根据所选答案)。【参考方案3】:

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

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

【讨论】:

以上是关于使用 SQLConnection 连接到 SQL CE 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Windows 10 UWP 应用程序连接到 SQL Server 数据库

通过 Windows 远程桌面连接到 SQL 数据库:登录来自不受信任的域,不能与 WIndows 身份验证一起使用

C# SQLConnection 池

如何在 vb.net 中完全关闭 SQLConnection 字符串?

sqlserver 如何向数据库插入多条数据 数据条数不确定

故障转移后连接到镜像数据库