conn.Open();
            command.ExecuteNonQuery();
            conn.Close();请问,假如我连续有几次command.ExecuteNonQuery()数据库操作,我是每次执行ExecuteNonQuery()的时候都将数据库连接open,close一次呢?还是open后连续几个ExecuteNonQuery再CLOSE?
有什么分别?

解决方案 »

  1.   

    事务操作TransactionOptions options = new TransactionOptions();
    options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
    {
    }
    一次打开再close
      

  2.   

    比如:command1,command2,command3 ...的连接都是conn,那么.这样就可以
    try
    {
      conn.Open();
      command1.ExecuteNonQuery();
      command2.ExecuteNonQuery();
      command3.ExecuteNonQuery();
      ...
    }
    catch(Exception ex)
    {
      throw ex;
    }
    finally
    {
      con.Close();
    }
      

  3.   


    其实我个人觉得,频繁的open()和close()是没有必要的,因为在ADO.NET的处理机制里面,已经有相关的处理。
    ADO.NET是为断开数据链接而设计的,最初的思想就是将需要的数据存放到本地来,然后进行处理。只有数据流产生的时候,SqlConnection对象才会创建一个连接。数据结束之后,SqlConnection为自动关闭链接。这时你不去close(),其实数据库也已经关闭连接。
      

  4.   

    一般情况我是在try{}中open()然后进行数据库操作操作完后定义好catch{}紧接着在finally{}中close()掉。
      

  5.   

    @lz:
    如果需要在连接中连续执行多次命令时不必每次都关闭,打开连接.
    建议使用using代码段内创建一个短期生存对象,以在结尾处不必因忘记断连接而抛出异常.(在没有启用连接池的情况下)