使用事务和数据感知组件编写 Delphi 数据库应用程序的最佳方法是什么?
我必须编写一个访问 InnoDB 表的客户端应用程序,并在事务中做一些主从类型的事情。在对事务做了一些研究(从一般的角度)之后,我谦虚地得出结论,非数据感知组件和手工编码的 SQL 将是事务的“完美匹配”;但数据感知组件不会。他们似乎不是为彼此而生的。
我确实需要使用事务,但另一方面,我不能仅仅抛弃数据感知组件,因为它们极大地简化了事情。
有人可以启发我吗?我一直在谷歌搜索它,但我没有找到任何有用的答案。也许是因为我的英语不够好,所以我的关键词有限。
顺便说一句,我正在使用 Delphi 7,目前正在评估 UniDAC 作为数据访问库。
谢谢你。
编辑
描述我的问题的一个方面的示例:
想象一个上面有 2 个 DBGrid 的表单。第一个网格是 MasterGrid,上面是这些按钮:添加、编辑和删除。第二个网格是DetailGrid。如果用户单击添加,那么它会像这样:
- Connection.StartTransaction
- Master.Append 然后 Master.Post 然后 Master.Edit (因此主数据集具有自动增量主键,现在可以编辑)
- 以模态方式显示编辑表单,用户在其中填写主记录,并使用另一个表单添加一些详细记录。
- 如果用户单击确定,应用程序将执行 Master.Post 和 Connection.Commit。如果用户单击取消,则应用程序将执行 Connection.Rollback。
我知道事务应该尽可能短,但是您可以在上面看到事务仅与用户填写表单的速度一样短。
如果我使用的是非数据感知组件,我会根据用户输入自定义插入 SQL,然后在 StartTransaction 和 Commit 之间执行 SQL。所以我可以实现非常短的交易。
编辑 2
我感谢大家的友好参与。我从 vcldeveloper 中选择答案,因为它是最接近我当前需求的解决方案。