乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 110|回复: 8

AutoCAD中的ADODB错误

[复制链接]

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2015-3-18 23:50:32 | 显示全部楼层 |阅读模式
嗨,
我正在为AutoCAD 2010开发一个程序,它需要与MS-Access数据库进行交互。
系统详细信息是:
ACAD 2010
VB.Net
Windows XP
Vis. Studio 2008
在解决方案中,我引用了“Interop.ADODB.dll v2.8”程序集并使用 adodb 连接访问数据库。该程序在XP系统中工作正常。
但是,当我在Windows 7系统中运行该程序时,它在尝试连接数据库时会引发错误(请参阅屏幕截图)。
但是,我在普通的Windows exe中使用相同的方法。它工作正常。但是在AutoCAD中,它给出了错误。
我应该需要在XP和WIN7系统上编译单独的dll还是有任何其他解决方案?
注意:我也做了反向方法。在WIN7系统中编译了该程序,并在XP系统中进行了测试。在本例中,它没有显示该错误。
请提出解决方案。
谢谢
问候,
gsktry

0dblxv4abbu.png

0dblxv4abbu.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2015-3-19 00:42:45 | 显示全部楼层
我假设你的WinXP是x86,但Win7是64。我还假设 - 您的输出结果(对于Win7)不是x64(对于这两种情况:AutoCAD的exe或.net扩展名),或者您对COM包装器的引用仍然是x86。
在这种情况下,当您构建x86时,它将在Win7 x64上作为Wow64应用程序工作。您在Win7 x64上的AutoCAD也是x64。您的 x86 .net 扩展名不能作为 x86 或 Wow64 加载到 x64 进程中。
ADODB - 是坏方法。ADO.Net 更好。
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2015-3-19 02:44:07 | 显示全部楼层
不好意思。我对此有点不清楚。
现在我无法迁移到 ADO.Net,因为它涉及现有应用程序中的许多代码更改。
我的XP是X86,WIN7是64。我将目标 CPU 设置为 autocad dll 的 ' ANY CPU ' 。
您的意思是说在x86系统中编译的adodb互操作程序集在x64系统中不起作用吗?
在这种情况下,如果我在每个x86和x64上编译单独的版本,它会解决问题吗?
谢谢
gsktry
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2015-3-19 02:49:56 | 显示全部楼层
你问了类似的问题(关于互操作)。我已经回答了你关于这个话题的问题。什么不允许你尝试这样做?
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2015-3-19 03:07:04 | 显示全部楼层
是的。在那里,我删除了互操作程序集,并将编码更改为后期绑定。
是否可以对 adodb 互操作连接也执行相同的操作?如果是,我再次谷歌在adodb连接中应用后期绑定。
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2015-3-19 03:11:50 | 显示全部楼层
您可以在任何应用程序中使用后期绑定来代替Interop alwais。但是如果您的代码源有许多互操作代码,可能会有更方便的方法——编译两次:x64和x86。通常我都是通过切入点来解决类似的问题。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-3-19 09:32:39 | 显示全部楼层

由于 DB 是 MS Access 数据库,因此问题很可能是计算机没有安装 64 位 MS Access 数据库引擎。用于创建 ADODB 的连接字符串是什么?连接?
它在Win EXE中工作的原因是EXE实际上作为32位进程运行,而在64位AutoCAD中,代码必须是64位组件(MS Access Engine,它是用于MS Access 2003或更早版本的MS Jet Engine的替代品。
您需要下载MS Access Engine 64位并安装它,如果计算机安装了较旧的MS Office(MS Office 2010或更早版本),这有点棘手或困难。仅此一点就可能使使用MS Access作为数据源是非常糟糕的选择,不值得付出努力。
即使您必须坚持使用大量现有的 ADODB 代码,如果 ADODB 代码写得相当好,则用 SQL Express 替换 Access DB 也只会导致最小的代码更改。
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2015-3-19 10:20:33 | 显示全部楼层
SQL *听起来*像是一个很好的替代品,而且是从编程的角度。从管理的角度来看,那是另一个故事。您需要管理数据库的创建、归档和销毁,这比Access基于文件的数据库所涉及的简单文件管理要困难得多。
此外,it部门也参与其中。这又增加了一层管理复杂性。
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2015-3-19 23:41:01 | 显示全部楼层
如果您想要SQL但不想或无法构建SQL基础设施。总有SQLCompact。它是MS Access的绝佳替代品。然后,当您的办公室准备好使用SQL服务器时,只需更改连接字符串即可。然后,您可以使用实体框架,不再使用ADODB和ADO.NET.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 04:07 , Processed in 0.294926 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表