不知道什么问题有时候会出现,有时候不会出现。出现错误刷新一下页面就好了,但是给客户部能是大黄页啊。
人多访问的时候也会出现这样的错误!!困扰我很久了, 大家帮我看看 我的DBHelper有没有这样的问题 :using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace HenryLi.Cqytl.SqlClient
{
    public class DBHelper
    {        //数据库连接属性
        private static SqlConnection connection;
        public static SqlConnection Connection
        {
            get
            {
                string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
                if (connection == null)
                {
                    connection = new SqlConnection(connectionString);
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Closed)
                {
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Broken)
                {
                    connection.Close();
                    connection.Open();
                }
                return connection;
            }
        }
        /// <summary>
        /// 关闭数据库连接
        /// </summary>
        public static void CloseConn()
        {
            SqlConnection conn = Connection;
            if (conn.State == System.Data.ConnectionState.Open)
                conn.Close();
        }        /// <summary>
        /// 执行无参SQL语句
        /// </summary>
        public static int ExecuteCommand(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            int result = cmd.ExecuteNonQuery();
            CloseConn();
            return result;
        }
        /// <summary>
        /// 执行带参SQL语句
        /// </summary>
        public static int ExecuteCommand(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            int result = cmd.ExecuteNonQuery();
            CloseConn();
            return result;
        }
        /// <summary>
        /// 执行无参SQL语句,并返回执行记录数
        /// </summary>
        public static int GetScalar(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            CloseConn();
            return result;
        }
        /// <summary>
        /// 执行有参SQL语句,并返回执行记录数
        /// </summary>
        public static int GetScalar(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            CloseConn();
            return result;
        }
        /// <summary>
        /// 执行无参SQL语句,并返回SqlDataReader
        /// </summary>
        public static SqlDataReader GetReader(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            SqlDataReader reader = cmd.ExecuteReader();
            return reader;
        }
        /// <summary>
        /// 执行有参SQL语句,并返回SqlDataReader
        /// </summary>
        public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            SqlDataReader reader = cmd.ExecuteReader();
            return reader;
        }        /// <summary>
        /// 查询DataTable
        /// </summary>
        /// <param name="SqlStr"></param>
        /// <returns></returns>
        public static DataTable GetTable(string SqlStr)
        {
            SqlDataAdapter dap = new SqlDataAdapter(SqlStr, Connection);
            DataSet ds = new DataSet();
            dap.Fill(ds);
            CloseConn();
            return ds.Tables[0];        }
        /// <summary>
        ///  增删改
        /// </summary>
        /// <param name="SqlStr"></param>
        /// <returns></returns>
        public static bool Execute(string SqlStr)
        {
            SqlCommand cmd = new SqlCommand(SqlStr, Connection);
            int result = cmd.ExecuteNonQuery();
            CloseConn();
            return result > 0;
        }
    }
}
/////////////////////////调用方法///////////////////////////////////////////
        public IList<Sfwzxx> Select()
        {
            SqlDataReader dr = DBHelper.GetReader("select * from sfwzxx ");
            IList<Sfwzxx> list = new List<Sfwzxx>();
            while (dr.Read())
            {
                Sfwzxx sfwzxx = new Sfwzxx();
sfwzxx.Bh=((dr["Bh"])==DBNull.Value)?sfwzxx.Bh:Convert.ToInt32(dr["Bh"]);
sfwzxx.Fwqmc=dr["Fwqmc"].ToString();
                list.Add(sfwzxx);
            }
            dr.Close();
            DBHelper.CloseConn();
            return list;
        }

解决方案 »

  1.   

    一般 都是 在sqlconnection 里面 已经打开个连接了吧 检查一下吧
      

  2.   

    楼主最好去查下SQL 链接池个数限制的问题吧,像SQL 里面的ExecuteScalar()方法也没有用过 具体用完了要做哪些处理被人不是很清楚,你这样把所有SQL 操作封装成一个类在调用是不会出错的。
      

  3.   

    public static SqlDataReader GetReader=>private static SqlDataReader GetReader
    调整你的程序在 private 的情况下可以运行,错误就不会出现了
      

  4.   

      这位兄台DBHelper静态的  别的类就不能调用了!