Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Whats the difference between rs.close vs rs = nothing in a RecordSet

Tags:

I often find it confusing as to when it is appropriate to use:

rs.Close 

opposed to

Set rs = Nothing

I can understand needing to close a connection to a source, but should I be using both when the variable falls out of scope?

Can I just set the variable to Nothing in order to skip the step of Closing the connection? Would this be considered a bad practice?

like image 796
Curtis Inderwiesche Avatar asked Mar 30 '10 02:03

Curtis Inderwiesche


Video Answer


2 Answers

By using the "Close" method you are closing the connection to the database but is still in the memory where you can open again using the "Open" method.

Setting the recordset to "Nothing" on the other hand releases the object completely from the memory.

like image 196
Jojo Sardez Avatar answered Oct 18 '22 10:10

Jojo Sardez


The Close method tears down the memory structure.

Setting the variable to Nothing clears the pointer to that memory structure.

Theoretically, clearing the pointer should release the memory the pointer was referring to, because VBA uses reference counting for determining when it can release memory. Unfortunately, various things can go wrong and the reference count can end up out of whack, and memory won't be released even when it should be.

Thus, to be sure you're not subject to memory leaks, or the weird kinds of bugs caused by implicit and unreleased references, you both Close and set to Nothing.

like image 29
David-W-Fenton Avatar answered Oct 18 '22 10:10

David-W-Fenton