借别人一段代码,改成我想说明的问题,public DataSet ds = new DataSet();private void Button1_Click(object sender, System.EventArgs e)
        {
            DBProcess db = new DBProcess("ConnectString");  //假定DBProcess为定义的一个类
            //db.Open();
            ds = db.ExecuteDataSet("select * from intno",null);//执行sql或者存储过程
            //db.Close();
            db.Dispose();     //现在的情况,好多页面中的好多函数中都出现释放资源的调用,请问这样是否合理?  现在这种方式用的应该就是连接池吧?  
            int i = ds.Tables[0].Rows.Count;
        }        private void Button2_Click(object sender, System.EventArgs e)
        {
            int i= ds.Tables[0].Rows.Count;
            int j= ds.Tables[0].Rows.Count;
        }
///////////////
//DBProcess.cs
//假如这个类中
private SqlConnection Conn = null;//构造函数中Conn = new SqlConnection(strconn);  //此外还有个Dispose()方法,其中进行了Conn.Close();和Conn.Dispose();

解决方案 »

  1.   

    频繁关闭打开数据库连接很大可能会影响性能...这种方法是ASP的处理方法,ASP.NET不适用...
      

  2.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;/// <summary>
    /// Myclass 的摘要说明
    /// </summary>
    public class Myclass
    {
    public Myclass()
    {
            connstring = ConfigurationManager.AppSettings["constr"];
    }    protected SqlConnection conn;
        protected string connstring;
        protected void Open()
        {
            if (conn == null)
            {
                conn = new SqlConnection(connstring);
            }
            if (conn.State.Equals(ConnectionState.Closed))
            {
                conn.Open();
            }
        }    public void Close()
        {
            if (conn != null)
                conn.Close();
        }
        
        public void Sql_Dml(string sql)
        {
            Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            comm.ExecuteNonQuery();
            Close();
        }    public int Sql_Dql(string sql)
        {
            Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            SqlDataReader dr = comm.ExecuteReader();
            if (dr.HasRows)
            {
                return 1;
            }
            else
            {
                return 0;
            }
            Close();        
        }
        public DataTable Sql_SelectTable(string sql)
        {
            Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            Close();
            return ds.Tables[0];        
        }