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>
///创建时间:2008-8-4
/// 创 建 人:吕豪
/// 作    用:用于数据库的链接,
/// </summary>
public class DataBase
{
    /// <summary>
    /// 保护变量,数据库连接
    /// </summary>
    protected SqlConnection Connection;
    /// <summary>
    /// 保护变量,数据库链接串
    /// </summary>
    protected string ConnectionString;
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <spram name=ConnectionString>数据库连接字符串</spram>
    public DataBase()
    {
        ConnectionString = ConfigurationManager.AppSettings["SqlCoon"];
    }
    /// <summary>
    /// 析构函数。释放非托管资源
    /// </summary>
    ~DataBase()
    {
        try
        {
            if (Connection != null)
                Connection.Close();
        }
        catch { }        try
        {
            Dispose();
        }
        catch { }
    }
    /// <summary>
    /// 保护方法,打开数据库连接
    /// </summary>
    protected void open()
    {
        if (Connection == null)
        {
            Connection = new SqlConnection(ConnectionString);
        }
        if (Connection.State.Equals(ConnectionState.Closed))
        {
            Connection.Open();
        }
    }
    /// <summary>
    /// 公有方法,关闭数据库连接
    /// </summary>
    public void Close()
    {
        if (Connection != null)
        {
            Connection.Close();        }
    }
    /// <summary>
    /// 公有方法。释放资源
    /// </summary>
    public void Dispose()
    {
        //确保数据库被关闭
        if (Connection != null)
        {
            Connection.Dispose();
            Connection = null;
        }
    }
    /// <summary>
    /// 共有方法,获取数据,返回一个SqldataReader()
    /// </summary>
    /// <param name="SqlString">Sql语句</param>
    /// <returns>SqlDataReader</returns>
    public SqlDataReader GetSaDataReader(string SqlString)
    {
        open();
        SqlCommand cmd = new SqlCommand(SqlString, Connection);        SqlDataReader reader = cmd.ExecuteReader();
        return reader;
       
        reader.Close();
        
        Connection.Close();
        
    }
    /// <summary>
    /// 共有方法,返回DataSet
    /// </summary>
    /// <param name="SqlString"></param>
    /// <returns></returns>
    public DataSet GetDataSet(string SqlString)
    {
        open();
        SqlDataAdapter adapter = new SqlDataAdapter(SqlString, Connection);
        DataSet dataset = new DataSet();
        adapter.Fill(dataset);        Close();
        adapter.Dispose();
        dataset.Dispose();
        return dataset;
    }
    /// <summary>
    /// 共有方法,执行增,删,改
    /// </summary>
    /// <param name="SqlString">Sql语句</param>
    /// <returns>true Or false</returns>
    public bool ExecuteInfo(string SqlString)
    {
      
            open();
            SqlCommand cmd = new SqlCommand(SqlString, Connection);
            cmd.ExecuteNonQuery();
            return true;    }
    /// <summary>
    /// 执行统计信息
    /// </summary>
    /// <param name="SqlString"></param>
    /// <returns></returns>
    public int CountInfo(string SqlString)
    {
        open();
        SqlCommand cmd = new SqlCommand(SqlString, Connection);
        int i =Convert.ToInt32(cmd.ExecuteScalar());
        return i;
    }
   
   
}
该怎么解决!大家帮办忙!!

解决方案 »

  1.   


    /// <summary>
        /// 共有方法,获取数据,返回一个SqldataReader()
        /// </summary>
        /// <param name="SqlString">Sql语句</param>
        /// <returns>SqlDataReader</returns>
        public SqlDataReader GetSaDataReader(string SqlString)
        {
            open();
            SqlCommand cmd = new SqlCommand(SqlString, Connection);        SqlDataReader reader = cmd.ExecuteReader();
            return reader;
           
            reader.Close();
            
            Connection.Close();
            
        }
      

  2.   

    要么在获取另一个DataReader之前,关闭当前DataReader(但是别关闭了Connection对象),在重新设置Command对象的CommandText属性,再调用ExecuteReader()方法。或者干脆new 一个Command对象得了。
      

  3.   

    /// <summary>
        /// 共有方法,获取数据,返回一个SqldataReader()
        /// </summary>
        /// <param name="SqlString">Sql语句</param>
        /// <returns>SqlDataReader</returns>
        public SqlDataReader GetSaDataReader(string SqlString)
        {
            open();
            SqlCommand cmd = new SqlCommand(SqlString, Connection);        SqlDataReader reader = cmd.ExecuteReader();
            return reader;
           
            //reader.Close();这句注释掉
            
            //Connection.Close();这句注释掉
            
        }
    在调用处关闭DataReader对象和Connection对象。
      

  4.   

    该怎么做才不出现错误  ,我每调用的时候只要在一个页面上使用两个以上的查询的时候就出现错误,要关闭Reader
      

  5.   

    public SqlDataReader GetSaDataReader(string SqlString)
        {
            open();
            SqlCommand cmd = new SqlCommand(SqlString, Connection);        SqlDataReader reader = cmd.ExecuteReader();
            return reader;
           
            reader.Close();
            
            Connection.Close();

            
        }
    你已经return 了所以红色的部分就不会执行了。
    然后你又用相同的连接打开命令肯定会出错了。
      

  6.   


    DataReader是独占连接的,调用处调用结束关闭DataReader再重新打开