How do I treat the SQLiteCommand
object,
do I have to call Dispose()
after ExecuteScalar
, ExecuteNonQuery
and ExecuteReader
or not?
The documentation example on SQLiteCommand doesn't dispose it whilst in the SQLiteTransaction the example disposes the SQLiteCommand object.
I always close the data reader object though. My application accesses the db from many threads.
Mostly I am interested in not leaking connections or disturbing SQLite. I am aware of using
and IDisposable
usage
If it is disposable, dispose it if you will not use it again. The best would be, to use using
using(SQLiteCommand cmd as new SQLiteCoammand())
{
...
}
So it will be disposed automatically when leaving the using scope.
It's best-practise to dispose everything that implements IDisposable
as soon as you're finished with it because it might use unmanaged resources.
This should be done with the using
-statement since it wraps the code that uses this object and because it disposes it also in case of an exception.
using(var con = new SQLiteConnection(conString))
using(var cmd = new SQLiteCommand(con))
{
con.Open();
// ...
} // also closes the connection
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With