我在DBhelper里写的方法以及连接对象:
private static string connectionString = ConfigurationManager.ConnectionStrings["WanDu"].ConnectionString;
        /// <summary>
        /// 连接对象
        /// </summary>
        public static SqlConnection Connection
        {
            get
            {
                return new SqlConnection(connectionString);
            }
        }
方法:public static int GetScalar(string safeSql)
        {
            SqlCommand cmd = new SqlCommand(safeSql, Connection);
            
            try
            {
                Connection.Open();
                int result = Convert.ToInt32(cmd.ExecuteScalar());
                return result;
            }
            finally
            {
                Connection.Close();            }
        }
报错:ExecuteScalar 要求已打开且可用的连接。连接的当前状态为已关闭。
请教各位!!!

解决方案 »

  1.   

     private static SqlConnection cn = null;
    private static SqlCommand cmd = null;
            private static SqlConnection GetConn()
            {
                string ConnStr = M_Common.Helper.ConfigHelper.GetconnMsSql.ToString();
                cn = new SqlConnection(ConnStr);
                if (cn.State != ConnectionState.Open)
                {
                    cn.Open();
                }
                return cn;
            }
    public static int ExecuteScalar(string cmdtext, SqlParameter[] para, CommandType ct)
            {
                int value;
                try
                {
                    cmd = new SqlCommand(cmdtext, GetConn());
                    cmd.CommandType = ct;
                    cmd.Parameters.AddRange(para);
                    value = Convert.ToInt32(cmd.ExecuteScalar());
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (cn.State == ConnectionState.Open)
                    {
                        cn.Close();
                    }
                }
                return value;
            }