代码一如下:
SqlConnection MyConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
string strSel1 = "select * from yqlj order by px asc";
DataSet MyDataSet = new DataSet();
SqlDataAdapter myCommand = new SqlDataAdapter(strSel1,MyConnection);
myCommand.Fill(MyDataSet);
DataList4.DataSource=MyDataSet; 
DataList4.DataBind();代码二如下:
SqlConnection MyConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
string strSel1 = "select * from yqlj order by px asc";
DataSet MyDataSet = new DataSet();
SqlDataAdapter myCommand = new SqlDataAdapter(strSel1,MyConnection);
myCommand.Fill(MyDataSet);
DataList4.DataSource=MyDataSet; 
DataList4.DataBind();
                           //释放SqlDataAdapter 
myCommand.Dispose(); 
请问一下这两个代码有什么区别,我一直用第一种,不知你二种好在哪里?

解决方案 »

  1.   

    都不好,应该在DataList4.DataSource=MyDataSet 前就关闭连接command等相关对象.
      

  2.   

    myCommand.Dispose(); 如果不在代码中增加这句,那么微软的垃圾回收就帮你释放掉了,只不过最好自己手动释放比较好,微软的垃圾回收不是实施的
      

  3.   

    SqlConnection  是非托管资源,要手动释放或用using()
      

  4.   


    using(SqlConnection MyConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]))
    {
                string strSel1 = "select * from yqlj order by px asc";
                DataSet MyDataSet = new DataSet();
                SqlDataAdapter myCommand = new SqlDataAdapter(strSel1,MyConnection);
                myCommand.Fill(MyDataSet);
    //释放SqlDataAdapter 
                myCommand.Dispose(); 
                DataList4.DataSource=MyDataSet; 
                DataList4.DataBind();
                               
    }其实也不怎么好...
      

  5.   

    DataAdapter 自动打开 Connection,反而觉得不自在...