C# 已打开与此命令关联的DataReader,必须先关闭该命令

C# 已打开与此命令关联的DataReader,必须先关闭该命令,c#,C#,当我试图执行代码时,它显示了上面的错误 try { com.CommandText = "select * from Export"; com.ExecuteReader(); data_mode = "Export"; com.CommandText = "Insert INTO [" + New_access_file + "]." + data_mode + " select * FROM ExportDATA"; com.ExecuteNonQu

当我试图执行代码时,它显示了上面的错误

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();
}

您需要打开连接:-

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();
                 }

您需要打开连接:-

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();
                 }

在使用完DataReader对象后,应该始终调用Close方法

请注意,当DataReader打开时,该连接由该DataReader独占使用。在关闭原始DataReader之前,无法执行连接的任何命令,包括创建另一个DataReader

使用此代码

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

reader.Close();

有关详细信息,您可以使用
CommandBehavior.CloseConnection
。我们可以使用命令对象的ExecuteReader方法传递它,比如

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

这将确保在调用reader.Close()时,关联的连接对象也将被关闭。

您应该始终在使用完DataReader对象后调用Close方法

请注意,当DataReader打开时,该连接由该DataReader独占使用。在关闭原始DataReader之前,无法执行连接的任何命令,包括创建另一个DataReader

使用此代码

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

reader.Close();

有关详细信息,您可以使用
CommandBehavior.CloseConnection
。我们可以使用命令对象的ExecuteReader方法传递它,比如

var reader = com.ExecuteReader(CommandBehavior.CloseConnection);
这将确保在调用reader.Close()时,关联的连接对象也将被关闭