2013-04-23 7 views
0

, когда я пытаюсь выполнить код, он показывает указанную выше ошибку.уже открытый DataReader, связанный с этой Командой, который должен быть закрыт первым

try 
{ 
    com.CommandText = "select * from Export"; 
    com.ExecuteReader(); 

    data_mode = "Export"; 
    com.CommandText = "Insert INTO [" + New_access_file + "]." + data_mode + " select * FROM ExportDATA"; 
    com.ExecuteNonQuery(); 
} 
catch 
{ 
    data_mode = "Export"; 
    com.CommandText = "SELECT * INTO [" + New_access_file + "]." + data_mode + " FROM ExportDATA"; 
    com.ExecuteReader(); 
} 

ответ

3

Вы должны всегда вызывать Закрыть метод, когда вы закончили с помощью объекта DataReader.

Обратите внимание, что, хотя DataReader открыт, соединение используется исключительно этим DataReader. Вы не можете выполнять какие-либо команды для соединения, включая создание другого DataReader, пока исходный DataReader не будет закрыт.

Используйте этот код,

var reader = com.ExecuteReader(); 
//do whatever with reader 

reader.Close(); 

Или

Вы можете использовать CommandBehavior.CloseConnection для получения дополнительной информации Will ExecuteReader(CommandBehavior.CloseConnection) always close connection?. Мы можем использовать передать его с помощью метода ExecuteReader объекта Command, как

var reader = com.ExecuteReader(CommandBehavior.CloseConnection); 

Это позволит убедиться, что, когда мы называем reader.Close() связанный с ним объект соединения также будет закрыт.

+0

спасибо, что он отлично работает. – SoumitaP

0

Вам необходимо открытое соединение: -

try 
       { 
        con.open(); 

        com.CommandText = "select * from Export"; 
        com.ExecuteReader(); 

        data_mode = "Export"; 
        com.CommandText = "Insert INTO [" + New_access_file + "]." + data_mode + " select * FROM ExportDATA"; 
        com.ExecuteNonQuery(); 
       } 
       catch 
       { 
        data_mode = "Export"; 
        com.CommandText = "SELECT * INTO [" + New_access_file + "]." + data_mode + " FROM ExportDATA"; 
        com.ExecuteReader(); 
       } 
       Finally 
       { 
        con.close(); 
       }