Author

Ahmed Samir

Evry1falls is my online name

Solution - There is already an open DataReader associated with this Command which must be closed first.

Solution - There is already an open DataReader associated with this Command which must be closed first. 5 of 5

There is already an open DataReader associated with this Command which must be closed first.


Problem : 

There is already an open DataReader associated with this Command which must be closed first.

Cause :
Having more than 1 dataReader result set working at the same time .

Solution : 

In my solution example, i work with SqlServer2000 and VB.Net 2005 
The Example Project can be downloaded at the end of this post :
It contains (SqlServer2000 DataBase - VB.Net Project)
The example shows how to navigate (First Record - Next Record) using ADO.Net 2.0 Online-Mode using SqlClient DataReader ...
Sql Database Name : Market
Sql Database Table : Market.Info
Server Name : evry1falls
(in order to see the example correctly, you'll have to Import the Database 'Market' into your sqlserver2000 Enterprise Manager)
Photo1 : Application Final Design
VB.net SqlServer project
VB.net SqlServer project

Photo2 : Table Structure
vb.net sqlserver datagridview


vb.net sqlserver table
Photo3 : Codes
vb.net sqlserver source code
vb.net sqlserver source code
Photo4 : Codes
vb.net sqlserver source code


vb.net sqlserver source code
Photo5 : Codes
vb.net sqlserver source code
vb.net sqlserver source code
Now if you run the project and tried to navigate using (First) or (Next) you will get the Exception :
There is already an open DataReader .....
so the solution would be :

Trap the Exception that shows in the (SelectedIndexChanged) Event of the (ComboBox) like this :


and the same for the (Next) Button ..
now you can Navigate and search using combobox safely without exceptions ..

Note :
- Source code will give you exception and you will have to re-write the solution by yourself  as shown above .
- The Folder(Bin/Debug) Includes (Back-Up) use it to restore the (Market Database) in your sqlserver2000
- use the namespace (evry1falls) as new server Registration .

Download Source Code : MediaFire Link


Using MS Access 2003/2007/2010

- In case of using Microsoft Access Database, OleDb.OleDbDataReader with OleDb.OleDbCommand.


The work around or the solution would be :
Always create a new Instance of the OleDbCommand, I.e

Comment Via facebook

Popular posts from this blog

Visual Basic 2010 with MS-Access Database

Visual Basic 2010 Read/Write Command Prompt

Visual Basic Compare Two Treeviews and return differences

Visual Basic Online Course The following control could not be licensed: TxTextControl.TextControl

Visual Basic 2010 Math Functions