用VB完成關(guān)閉所有數(shù)據(jù)庫(kù)對(duì)象
發(fā)表時(shí)間:2024-02-22 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]如果你在程序中使用了任何數(shù)據(jù)庫(kù)對(duì)象(DAO, RDO, 或者 ADO), 在退出程序之前,你必須確認(rèn)已經(jīng)關(guān)閉掉了所有已經(jīng)打開(kāi)的記錄、數(shù)據(jù)庫(kù)和數(shù)據(jù)工作臺(tái)(recordsets, databases, and workspaces)。雖然退出程序時(shí)這些對(duì)象的指針都被自動(dòng)施放了,但是如果你自己又不能確認(rèn)...
如果你在程序中使用了任何數(shù)據(jù)庫(kù)對(duì)象(DAO, RDO, 或者 ADO), 在退出程序之前,你必須確認(rèn)已經(jīng)關(guān)閉掉了所有已經(jīng)打開(kāi)的記錄、數(shù)據(jù)庫(kù)和數(shù)據(jù)工作臺(tái)(recordsets, databases, and workspaces)。雖然退出程序時(shí)這些對(duì)象的指針都被自動(dòng)施放了,但是如果你自己又不能確認(rèn)是否真正地釋放了打開(kāi)的數(shù)據(jù)庫(kù)對(duì)象,那么就有可能數(shù)據(jù)庫(kù)連接沒(méi)有馬上被釋放掉,從而被這些對(duì)象所占用的內(nèi)存就再也不能被操作系統(tǒng)再次分配。
---- 下面有一段放在Form_Unload 事件(或者其他退出模塊中)中的一小段代碼例子,它演示了關(guān)閉所有打開(kāi)的DAO 工作臺(tái)、數(shù)據(jù)庫(kù)和記錄并釋放了被這些對(duì)象占用的內(nèi)存。當(dāng)你退出FORM時(shí),不論在有一個(gè)、100個(gè)甚至沒(méi)有數(shù)據(jù)庫(kù)連接時(shí)都可以使用下面代碼。
Private Sub Form_Unload(Cancel As Integer)
' 關(guān)閉數(shù)據(jù)庫(kù)對(duì)象并且釋放內(nèi)存
On Error Resume Next
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
For Each ws In Workspaces
For Each db In ws.Databases
For Each rs In db.Recordsets
rs.Close
Set rs = Nothing
Next
db.Close
Set db = Nothing
Next
ws.Close
Set ws = Nothing
Next
End Sub