使用 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
系列接口,而不是特定于平台的SqlXXX
和SqlCeXXX
接口。见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 身份验证一起使用
如何在 vb.net 中完全关闭 SQLConnection 字符串?