SqlDbConnection mydb = new SqlDbConnection();
            mydb.conn.Open();            string strread = "select * from tab";
            SqlCommand cmd = new SqlCommand(strread, mydb.conn);
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                so something....
            }
            else
            {
                Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
                return;
            }
            dr.Dispose();
            cmd.Dispose();
            mydb.conn.Close();我想问的是,要都能关闭数据链接此处的mydb.conn.Close()放在哪里最好,,,,,??如果没有取到记录,就执行js那一句返回上一页了,那下面的dr.Dispose();cmd.Dispose();mydb.conn.Close();有没有闭关啊?
新手学习求指点,,,,,,,,,,,,,,,,,,,,,谢谢!!!!!!!!

解决方案 »

  1.   

    获取到数据就可以关闭了。放 SqlDataReader dr = cmd.ExecuteReader();
    这句下面都可以 
    不过你放在最后也没什么  快不了多少
      

  2.   

    不想写关闭的话,那就用
    using(SqlConnection con = new SqlConnection("XXX"))
    {
          using(SqlCommand cmd = new SqlCommand(xx,xx))
          {
                
          }
    }如果不使用了,GC机制会在适当的时候自动回收资源的
      

  3.   

    SqlDbConnection mydb = new SqlDbConnection();
    SqlDataReader dr;
    try{
      mydb.conn.Open();  string strread = "select * from tab";
      SqlCommand cmd = new SqlCommand(strread, mydb.conn);
      dr = cmd.ExecuteReader();
      if (dr.Read())
      {
      so something....
      }
      else
      {
      Response.Write("<script>alert('记录不存在,确认返回!');history.go(-1);</script>");
      return;
      }
      catch{}
      finally{
      dr.Dispose();
      cmd.Dispose();
      mydb.conn.Close();
    }放在finally中
      

  4.   

    在方法的末尾关闭就行
    或者
    using(SqlDbConnection mydb = new SqlDbConnection())
    {
    }
      

  5.   


    先找个DBhelper类研究研究
      

  6.   

    没有try catch finally 写数据库的操作代码很危险,尤其你的代码中还有datareader,写在finally就可以。。