【问题标题】:How to access SQL CE 3.5 from VB6如何从 VB6 访问 SQL CE 3.5
【发布时间】:2010-04-07 10:06:49
【问题描述】:

我们有一个用 C# 编写的 .NET 3.5 SP1 应用程序,它将数据存储在 SQL CE 3.5 数据库中。我们还需要从旧版 VB6 应用程序中访问(只读)这些数据。

我不知道这是否可能。对于这个问题,我能想到几种方法。

1) 我已阅读有关 ADOCE 连接的信息,但这似乎只是嵌入式 Visual Basic 的一个选项

2) 我似乎无法像这样使用 ADODB.Connection 对象建立连接

Dim MyConnObj As New ADODB.Connection
' Microsoft.SQLSERVER.CE.OLEDB.3.5
' Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
MyConnObj.ConnectionString = "Provider=SQLOLEDB;Data Source=c:\test.sdf"
MyConnObj.Open

也许这只是提供商的错误选择?我还尝试了上面显示为 cmets 的提供程序和不同的连接字符串,但无济于事。这两个提供程序都没有安装在我的开发机器上,也不会安装在我客户的机器上。

3) 也许有一种方法可以使用更通用的方法,例如 ODBC?但我相信这会导致设置/部署工作,对吧?

有人对这种情况有任何经验吗?正如你所看到的,我真的在寻找一些好的起点。我也接受诸如“这很简单,你也一样”之类的答案,只要它们带有一些指导性的指示;-)

【问题讨论】:

    标签: c# vb6 sql-server-ce legacy


    【解决方案1】:
    Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=c:\test.sdf;
    

    确认您有可用的提供程序。启动 Regedit.exe,打开 HKEY_CLASSES_ROOT 节点,向下滚动并确认您看到 Microsoft.SQLSERVER.CE.OLEDB.3.5 键。如果它不存在,您必须安装它。 Download link.

    【讨论】:

    • 听起来很合理。安装提供程序后我得到了它,非常感谢。我将不得不看看安装提供程序是否会很麻烦。
    • 这是一个您必须处理的麻烦,不安装它不是一种选择。
    【解决方案2】:

    根据connectionstrings.com,你应该可以使用

    Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=myPath\myData.sdf;
    

    但是,SQL Server CE 的 OLEDB 提供程序不提供所有功能。

    【讨论】:

    • connectionstrings.com 是个好主意。我希望这个提供者的限制不会打扰我,选择语句应该相当简单。
    【解决方案3】:

    您可以创建一个 COM 可见的 C# 组件来为 VB6 提取数据。这避免了为 SQL Server CE 使用可能古怪的 OLEDB 提供程序。

    它的另一个好处是它在 VB6 和数据库结构之间增加了一层绝缘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2010-12-30
      相关资源
      最近更新 更多