//平台数据库
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
我最后改成这样还是报错。
报错的时候是在多次频繁使用的时候产生。 /// <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();
}
}
}