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 Online Course DevExpress 12.2.4 full for Visual Studio 2010

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

Visual Basic 2010 Read/Write Command Prompt

Visual Basic Online Course - The Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine

Visual Basic Online Courses DataGridView Add Edit Delete