我见过其他关于使用PHP和ADO访问ODBC数据库的帖子,但我认为我的问题不是在PHP之外提出的。我最近接手了一个项目,其中触摸屏界面运行Windows XP并使用一些非常类似于Java的专有欧洲编程语言来与PLC和机器接口。
我们定期记录来自各种传感器的信息,然后使用该程序打开与ODBC数据库的连接并存储记录。我的任务是跟踪一个错误,其中数据暂时停止记录几天,没有明显的原因,我确信它与ODBC数据库(可修复)或Windows和版本之间的版本不兼容有关。 PLC(不可修复)。所以我先为可修复的那个拍摄。
程序创建一个新的ActiveXObject并使用ADO打开与数据库的连接,将命令串起来,执行它,然后关闭连接。每次创建记录时都会执行所有操作,并且我试图找出原始程序员是否有这样做的原因,而不是创建adodb.Connection,打开它,然后为每个数据记录进行事务处理写入,只有当用户非常喜欢该程序时关闭它。
我唯一能想到的是他们担心如果触摸屏在连接断开时会断电会发生什么。那会怎么样?没有人真正了解我们正在使用的这种几乎Java语言,所以我无法确定程序关闭时ActiveXObjects会发生什么。像这样的事情会导致这些为期几天的录音失误,还是我完全咆哮了错误的树?
答案 0 :(得分:3)
每次需要时打开和关闭连接通常会被认为是更安全,最不紧密的网络方法。效率低下的唯一一次是当数据库进行了很多调用而没有太多时间流逝时。
有时不建议保持数据库连接处于打开状态。在使用基于文件的数据库(如Visual Foxpro或MS Access)的情况下,数据库文件实际上可能会被丢弃的网络连接损坏,尽管我认为通常情况下,连接在写入期间需要丢弃某种。
您是否有任何错误控制或调试选项?每次尝试对数据库进行调用时,您都可以写入文本文件吗?
我真的不认为这里使用的语言过于重要,因为你使用ADO,ODBC,我假设某种标准的数据库格式。失败可能取决于其中一种技术,除非代码中某处出现阻止数据记录例程被触发的错误。