VB6 DAO连接到SQL Server 2008数据库

时间:2018-11-12 18:51:02

标签: sql-server vb6 dao

简介(tldr;下面的问题)

首先,是的,我知道DAO:

  1. 已过时
  2. 不再受支持
  3. SQL效率低下
  4. 一般吸

所以按照这些思路回答对问题无济于事。

很久以来,我一直将偏好设置转移到nHibernate和其他连接数据的方式。但是,我在一个旧项目中,该计划的第一步是将数据从许多Access数据库迁移到单个SQL Server实例。很简单。 数据迁移已经完成并且可以正常工作。

但是,该应用程序是使用DAO连接到Access的VB6代码,在第一阶段中,我需要对此进行最小的更改。下一阶段(很快)是将整个应用程序转换为正确命中SQL的ASP.MVC站点。

当我四处寻找如何正确构造DAO OpenDatabase()函数以命中SQL Server时,所有答案都是上述的“您为什么要这样做?” “您应该学习ADODB!” “ DAO是给傻瓜的!” 胡说八道,从不解决所提出的实际问题。不幸的是,即使在特定论坛等站点上将其标记为“已解决”,原始问题仍保留在搜索引擎中。

如此...问题

鉴于所有这些,还有谁还记得如何使用DAO OpenDatabase连接到Sql Server吗?

是的,这相当于用支撑和钻头在一块木头上钻孔?当然,电钻会更好,更智能,更快,并且具有所有优点……但是有时需要采用旧的方法。

2 个答案:

答案 0 :(得分:3)

我认为您可以使用的一种方法是使用ODBC连接。 在“管理工具”窗体控制面板y上,可以将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)

答案 1 :(得分: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 Client对于DAO来说太新了(我认为)。您可能需要尝试很多。