VB6 DAO 连接到 SQL Server 2008 数据库

问题描述 投票:0回答:2

简介(tldr;问题在下面)

首先,是的,我知道 DAO:

  1. 已经过时了
  2. 不再支持
  3. SQL 效率低下
  4. 总体来说很糟糕

所以这些答案对解决问题没有帮助。

我早已将偏好转向 NHibernate 和其他连接数据的方式。但是,我正在进行一个遗留项目,该项目的第一阶段是将数据从多个 Access 数据库迁移到单个 SQL Server 实例。很容易。数据迁移已经完成并且工作正常。

但是,该应用程序是使用 DAO 连接到 Access 的 VB6 代码,我需要在第一阶段尽可能少地更改它。下一阶段(很快)是将整个应用程序转换为正确访问 SQL Server 的 ASP.NET MVC 站点。

当我搜索如何正确构建 DAO

OpenDatabase()
函数来访问 SQL Server 时,所有答案都是前面提到的 “你为什么要这样做?” “你应该学习ADODB!” “DAO 是为傻瓜准备的!” 胡言乱语,从未解决实际提出的问题。可悲的是,原始问题仍然存在于搜索引擎中,即使它在特定论坛等上标记为“已解决”......

所以...问题

考虑到这一切,还有人记得如何使用 DAO 连接到 SQL Server

OpenDatabase
吗?

是的,这相当于用支架和钻头在一块木头上钻孔?当然,电钻更好、更智能、更快,还有所有这些优点……但有时需要使用旧方法。

sql-server vb6 dao
2个回答
3
投票

我最近必须将带有 DAO 的 VB6 应用程序从 SQL7 迁移到 SQL 2016,并且该过程几乎是直接的。除了现在已经过时的旧 SQL 语法之外,我没有更改代码中的任何内容。

我使用ODBC。那么,这里是我如何使用 DAO 打开 SQL 连接:

connect = "DSN=<odbcname>;UID=<username>;PWD=<password>;DATABASE=<database>"
Set datab = rdoEnvironments(0).OpenConnection("", rdDriverCompleteRequired, False, connect)

这是我们的解决方案,因为在我们的旧应用程序中要做的更改较少。请注意,这不是唯一的方法。

记住您必须使用 32 位 ODBC 驱动程序。如果您使用的是 64 位系统,请选择好的那个 (

C:\Windows\SysWOW64\odbcad32.exe
)。我想我已经使用了
SQL Server
驱动程序。 SQL Native 客户端对于 DAO 来说太新了(我认为)。您可能需要尝试很多次。


3
投票

我认为一种方法是使用 ODBC 连接。 在管理工具形式的控制面板上,您可以将 ODBC 源添加到 SQL Server。 完成之后,你可以尝试这个:

Dim worksp As Workspace
Dim conexString As String
Dim base As Variant
Set worksp = DBEngine.Workspaces(0)
Let conexString = "OBDC;DSN=SQLDNSNAME;UID=;PWD="
Set base = worksp.OpenDatabase("BDDNAME", False, False, conexString)
© www.soinside.com 2019 - 2024. All rights reserved.