0

当我尝试执行代码时,它显示了上述错误。

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

2 回答 2

3

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

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

使用此代码,

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

reader.Close();

或者

您可以使用CommandBehavior.CloseConnection获取更多信息ExecuteReader(CommandBehavior.CloseConnection) 是否总是关闭连接?. 我们可以将它与 Command 对象的 ExecuteReader 方法一起使用,例如

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

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

于 2013-04-23T07:15:01.077 回答
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();
                 }
于 2013-04-23T06:51:30.443 回答