【问题标题】:Are there any 'gotchas' involved when invoking BDE through a Delphi COM server or DLL from .NET?通过 Delphi COM 服务器或 .NET 中的 DLL 调用 BDE 时是否涉及任何“陷阱”?
【发布时间】:2010-07-11 17:42:26
【问题描述】:

我问这个是对我之前的问题的跟进:What is a good way of accessing dBase files using BDE and Delphi?

有人建议我调用 Delphi COM 服务器而不是通过标准输入/输出传递数据,我完全同意这样的解决方案非常有限。

基本上我需要一种从 C# 调用 BDE 的方法,而不使用 ADO/OLEDB。最初我的要求是能够直接执行查询并返回某种 RecordSet 对象,但我也可以使用具有以下方法的强类型接口:

uint CreateCustomer(string fname, string lname, string addr, string email) uint CreateContract(...) bool DeleteContract(...)

我宁愿不必使用 regsvr32 注册 COM 服务器,而是使用 Interop 和 DllImport 直接调用 DLL 方法。使用后一种方法,在资源清理和“BDE 会话”方面是否有任何特殊考虑?

此外,处理异常并确保在发生异常时释放任何 BDE(或其他)资源的正确方法是什么?

我有很多问题,但我不确定如何以清晰的方式表达它们:)

编辑:我完全知道 BDE 已经“死”,但我无法控制仍在使用 BDE 的第三方软件。

【问题讨论】:

    标签: delphi interop delphi-7 bde dbase


    【解决方案1】:

    我错过了您最初的 BDE 问题,所以我也在那里提出了 fresh answer

    基本上:跳过 BDE,然后尝试Advantage Database Server

    --杰罗恩

    【讨论】:

    • 恐怕这对我一点帮助都没有,因为我需要使用 BDE 才能与我无法控制的旧的基于 BDE 的应用程序正确互操作。
    • 好的。您能否编辑您的问题以更详细地描述旧的基于 BDE 的应用程序的外观(从技术角度)以及您希望如何调用它(从功能角度)?
    • 如果您看一下我的问题,您会发现我特别关注资源使用和异常。如果我的应用程序未正确终止,我遇到了其他应用程序在 BDE 调用/数据访问期间锁定的情况。好像 BDE 挂在未释放的互斥锁或某种文件锁定上。这种情况通过停止/重新启动两个进程来解决。
    • 这就是为什么我建议在您的其他问题中使用 Advantage 数据库服务器;对此没有任何反应,所以我想知道您真正追求的是什么:即为什么 Advantage Database Server 不适合您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2020-08-07
    • 2012-08-22
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多