//平台数据库
        public static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["GameTradingCon"].ToString();        public static SqlConnection GetConnectinon()
        {
            return new SqlConnection(connectionString);
        }
        /// <summary>
        /// 功能:返回 首行首列 忽略其他值
        /// </summary>
        /// <param name="strProcName">存储过程名称</param>
        /// <param name="parameters">参数</param>
        /// <returns></returns>
        public static object GetScalar(string strProcName, SqlParameter[] parameters)
        {
            using (SqlConnection connection = GetConnectinon())
            {
                using (SqlCommand sqlCmd = connection.CreateCommand())
                {                    sqlCmd.CommandText = strProcName; //声明存储过程名
                    sqlCmd.CommandType = CommandType.StoredProcedure;                    foreach (SqlParameter parameter in parameters)
                    {
                        sqlCmd.Parameters.Add(parameter);
                    }                    return sqlCmd.ExecuteScalar();
                }
            }
        }谁来看下此方法有什么不对的地方,我调用次数过多就出现这样的异常。错误信息:ExecuteScalar requires an open and available Connection. The connection's current state is closed.
堆栈追踪:   at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)
   at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
   at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteScalar()
   at GameTradingByDb.DbHelperSQL.GetScalar(String strProcName, SqlParameter[] parameters) in D:\workspace\program\Platform\GameTradingByDb\DbHelperSQL.cs:line 892
   at GameTradingByDAL.TradingOrderServices.getOrderStatus(String orderid) in D:\workspace\program\Platform\GameTradingByDAL\TradingOrderServices.cs:line 631

解决方案 »

  1.   

    connection状态处于colos,没有打开
      

  2.   


    我最后改成这样还是报错。
    报错的时候是在多次频繁使用的时候产生。        /// <summary>
            /// 功能:返回 首行首列 忽略其他值
            /// </summary>
            /// <param name="strProcName">存储过程名称</param>
            /// <param name="parameters">参数</param>
            /// <returns></returns>
            public static object GetScalar(string strProcName, SqlParameter[] parameters)
            {
                using (SqlConnection connection = GetConnectinon())
                {
                    if (connection == null)
                    {
                        connection.Open();
                    }
                    if (connection.State == ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    if (connection.State == ConnectionState.Broken)
                    {
                        connection.Close();
                        connection.Open();
                    }
                    using (SqlCommand sqlCmd = connection.CreateCommand())
                    {                    sqlCmd.CommandText = strProcName; //声明存储过程名
                        sqlCmd.CommandType = CommandType.StoredProcedure;                    foreach (SqlParameter parameter in parameters)
                        {
                            sqlCmd.Parameters.Add(parameter);
                        }                    return sqlCmd.ExecuteScalar();
                    }
                }
            }