executescalar连接的现阶段状态为已连接

executescalar连接的当前状态为已连接
executescalar连接的现阶段状态为已连接

  //定义数据库链接属性
        private static SqlConnection objSqlConnection;

      
        /// <summary>
        /// 获得数据库连接状态
        /// </summary>
        public static SqlConnection ObjSqlConnection
        {
            get
            {

                string DBConnectionString = ConfigurationManager.ConnectionStrings["NopSqlConnection"].ConnectionString;
                if (objSqlConnection == null)
                {
                    objSqlConnection = new SqlConnection(DBConnectionString);
                    objSqlConnection.Open();
                }
                else if (objSqlConnection.State == System.Data.ConnectionState.Closed)
                {
                    objSqlConnection.Open();
                }
                else if (objSqlConnection.State == System.Data.ConnectionState.Broken)
                {
                    objSqlConnection.Close();
                    objSqlConnection.Open();
                }
                return objSqlConnection;
            }
        }

        public static void CloseConn()
        {

            if (objSqlConnection.State == ConnectionState.Open)
            {
                objSqlConnection.Close();
            }
        }
 

  /// <summary>
        /// 无参sql查询首行首列数据的方法
        /// </summary>

        /// <returns>返回首行首列的值</returns>
        public static object GetScalerBySql(string sql)
        {

            SqlCommand objSqlCommand = new SqlCommand(sql, ObjSqlConnection);
            return objSqlCommand.ExecuteScalar();
        }


------解决方案--------------------
重复使用静态的 SqlConnection 对象是个错误,正确的做法是每次查询都新建一个连接,打开,并且确保关闭(用 finally ),
许多人担心效率问题,其实不必考虑太多,配置连接池就好了。