Delphi 完成更新后关闭ado连接进行访问,并删除mdb文件

Delphi 完成更新后关闭ado连接进行访问,并删除mdb文件,delphi,ms-access,ado,delphi-7,Delphi,Ms Access,Ado,Delphi 7,我正在尝试在读完mdb文件后删除它 这个过程是: copyFile(originMdb, to targetMdb); mdbConnection.active := true; mdbQuery.open; readMdbFileData; mdbQuery.close; connection.close; deleteFile(tagetMdb); 但生成的ldb文件不会消失 更新: 有没有办法告诉mdb,“我现在不需要任何连接,请关闭它,然后移除ldb文件上的锁” 相反,mdb引擎正在等

我正在尝试在读完mdb文件后删除它

这个过程是:

copyFile(originMdb, to targetMdb);
mdbConnection.active := true;
mdbQuery.open;
readMdbFileData;
mdbQuery.close;
connection.close;
deleteFile(tagetMdb);
但生成的ldb文件不会消失

更新: 有没有办法告诉mdb,“我现在不需要任何连接,请关闭它,然后移除ldb文件上的锁” 相反,mdb引擎正在等待进程结束,然后才会释放使用adoConnection建立的连接


更新2:在创建了一个简单的程序,刚刚打开并关闭了连接之后,该文件被释放,但是由于我持有一个adoqury,它拒绝释放该文件。

您需要等待连接关闭和jet引擎删除ldb文件。
ldb文件是由Jet数据库引擎创建的锁定文件

您需要等待连接关闭,Jet引擎删除ldb文件。
ldb文件是由Jet数据库引擎创建的锁定文件

您需要等待,其大小取决于您的数据库。但您也可以通过创建另一个函数直接删除ldb

例如:

Dim locationFLD As String
locationFLD = "yourLocation"
If Dir(locationFLD & "\*.ldb") <> "" Then
   deleteFile(tagetMdb) & ".ldb";
End If
Dim locationFLD作为字符串
locationFLD=“您的位置”
如果是Dir(locationFLD&“\*.ldb”)”,则
删除文件(tagetMdb)和“.ldb”;
如果结束

您需要等待,这取决于数据库的大小。但您也可以通过创建另一个函数直接删除ldb

例如:

Dim locationFLD As String
locationFLD = "yourLocation"
If Dir(locationFLD & "\*.ldb") <> "" Then
   deleteFile(tagetMdb) & ".ldb";
End If
Dim locationFLD作为字符串
locationFLD=“您的位置”
如果是Dir(locationFLD&“\*.ldb”)”,则
删除文件(tagetMdb)和“.ldb”;
如果结束

Access数据库引擎在处理mdb时会处理ldb。ldb在操作系统级别被锁定,直到引擎将其释放。因此,我怀疑这种方法只能删除Access引擎崩溃后留下的ldb。Access数据库引擎在处理mdb时会处理ldb。ldb在操作系统级别被锁定,直到引擎将其释放。因此,我怀疑这种方法只能移除Access引擎崩溃后留下的ldb。我应该等待多久?有没有办法设置等待发布的时间?我可以立即强制释放吗?我应该等多久?有没有办法设置等待发布的时间?我可以立即强制释放吗?你不应该关心LDB文件的存在与否。此外,Jet/ACE在连接方面工作得更好,因此您可能正在应用非应用程序连接管理实践,而这些实践并没有提供任何好处。简言之,我问你为什么要担心这一点——顺其自然,看看它是否会导致任何问题。文件处理后需要删除,以便新文件出现。那么,你的意思是需要删除MDB文件,而你只是使用LDB文件的存在作为MDB打开的代理?我不知道该说什么。显然,您的开发环境没有释放将完全关闭连接的资源。您是否尝试过不仅关闭连接,还破坏数据库引擎的实例?我不使用Delphi编程,所以不知道如何实现,但我“我已经看到在其他情况下这是解决方案。您不应该关心LDB文件的存在与否。此外,Jet/ACE在连接方面工作得更好,因此您可能正在应用非应用程序连接管理实践,而这些实践并没有提供任何好处。简言之,我问你为什么要担心这一点——顺其自然,看看它是否会导致任何问题。文件处理后需要删除,以便新文件出现。那么,你的意思是需要删除MDB文件,而你只是使用LDB文件的存在作为MDB打开的代理?我不知道该说什么。显然,您的开发环境没有释放将完全关闭连接的资源。您是否尝试过不仅关闭连接,还破坏数据库引擎的实例?我不使用Delphi编程,所以不知道该如何实现,但我知道在其他情况下这是解决方案。