System.Data.SQLite
View Ticket
Not logged in
Ticket UUID: daeaf3150ae6023320f31b628fe792234dc52342
Title: SQLiteCommand.Execute SQLiteExecuteType.Reader support
Status: Closed Type: Code_Defect
Severity: Important Priority: Blocker
Subsystem: Command Resolution: Fixed
Last Modified: 2014-11-07 23:51:02
Version Found In: 1.0.94.0
User Comments:
anonymous added on 2014-11-05 19:58:03:
I tried (at the F# repl) using the static SQLiteCommand.Execute method to execute a query (specifying  SQLiteExecuteType.Reader). The method did indeed return a reader (Execute did not raise an exception), but the reader was effectively useless because (I believe) the connection that created it was already disposed. E.g.:

> reader.HasRows;;
System.ObjectDisposedException: Cannot access a disposed object.

Looking at the code in SQLiteCommand, I see that ExecuteReader is called in a using block which will dispose the connection.

Suggestion: when the executeType is Reader, do not dispose the connection after a successful ExecuteReader; instead, include CommandBehavior.CloseConnection in the commandBehavior flags so that closing the returned reader closes the connection as well.

mistachkin added on 2014-11-07 23:51:02:
Fixed on trunk via check-in [ad79758d0c].