用asp.net写的东西,经常出现Connection is busy with results for another command,不知道各位有什么较好的解决方法~~谢谢大家了~

解决方案 »

  1.   

    不要共用一个同一个connection对象
    及时关掉connection
      

  2.   

    当Command对象执行钱后,自动维持Connection对象不变,也就是说,Command执行前如果Connection是关闭的,那么Command执行时打开连接,执行完毕后关闭连接,在执行期间独占连接不允许其他Command对象使用。如果一定要使用在Class级别对所有方法可见的“公共”连接对象,那么最好让连接一直处于关闭状态,然后在执行前检测连接状态,如果发现连接打开,则说明有Command在使用连接执行操作,等连接关闭后说明其他Command已经执行完毕,就可以执行其他Command了。
    造成这个问题的原因,可以猜测为:事件交叠,多线程并发等等。如果需要彻底解决,可以使用命令排队或者多线程同步的方法。
      

  3.   

    我原先用的是在一个类中
    class a
    {
    连接.open();
    第一个DataReader;
    第二个DataReader;
    第三个DataReader;
    连接.close();
    }各位的意思是否应该是
    class a
    {
    连接.open();
    第一个DataReader;
    连接.close();连接.open();
    第二个DataReader;
    连接.close();连接.open();
    第三个DataReader;
    连接.close();
    }
      

  4.   

    fill()
    就不会有问题
    它会自动关闭的
      

  5.   

    呵呵,这就是编程习惯问题了,一般conn在用的时候才打开,在页面最后最好显式关闭。
    一般 这样用
    conn.open()
    cmd.execute....
    conn.close()
    如果是reader
    conn.open()
    reader = cmd.executereader(CommandBehavior.CloseConnection);
    这样在关闭reader 的同时也关闭了conn
      

  6.   

    谢谢tomtown530(梦想一定会实现!) 的详细答复~~