public DataTable Query(string SQLString)
        {
            try
            {
                SqlConnection connection = new SqlConnection("......");
                DataSet ds = new DataSet();                SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                command.Fill(ds, "ds");
                return ds.Tables[0];
            }
            catch (SqlException e)
            {
                throw e;
            }
        }

解决方案 »

  1.   

    在DbDataAdapter的Fill逻辑中会自己Open这个Connection的,所以不需要程序员手动的去打开。
      

  2.   

    - -~貌似 好像看过你在问
    因为 SqlDataAdapter封装了 Open
    SqlDataAdapter执行流程open SQLCONNECTION
    read data
    close SqlConnection- -~!
    你可以对着 SqlDataAdapter按F12
    里面有一个 XXXOpen函数
      

  3.   

    SqlDataAdapter 是DataSet 离线操作的 适配器 
    ADO.NET中有详细说明 ,离线操作上新型的数据操作方式 不用随时和SQL SERVER 保持通信状态。。是将结果集保存在内存中的一种数据读取方式。使用SqlDataAdapter 可以不用CONN.OPEN()
      

  4.   

    只有一种情况不用打开 sqlconnection 
    那就是使用SqlDataAdapter类的时候不用打开,因为这个对象是自动打开并且自动关闭的。 
      

  5.   

    SqlDataAdapter 自动去做open和close
      

  6.   

    因为你已经打开了数据库连接。你可以用这个方法判断是否打开了数据库连接
    if(System.Data.ConnectionState==ConnectionState.Closed)
    {
    connection.open()
    }