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 が閉じられるまで、別の 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 に答える