Sql 类型为';的未处理异常;系统堆栈溢出异常';发生在mscorlib.dll中
我使用递归,它有时毫无例外地工作。 在某些情况下,它会引发异常:-Sql 类型为';的未处理异常;系统堆栈溢出异常';发生在mscorlib.dll中,sql,winforms,recursion,c#-3.0,Sql,Winforms,Recursion,C# 3.0,我使用递归,它有时毫无例外地工作。 在某些情况下,它会引发异常:- class BaseData { public string DbConnection = ConfigurationManager.ConnectionStrings["OLTPPOINTER_Connectionstring"].ConnectionString; public string DbConnection_Report = ConfigurationManager.ConnectionString
class BaseData
{
public string DbConnection = ConfigurationManager.ConnectionStrings["OLTPPOINTER_Connectionstring"].ConnectionString;
public string DbConnection_Report = ConfigurationManager.ConnectionStrings["OLTPPOINTER_Connectionstring"].ConnectionString;
protected SqlConnection OpenConnection()
{
**SqlConnection conn = new SqlConnection(DbConnection);**----"StackOverflow Exception was unhandled"
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
return conn;
}
catch { throw; }
}
递归调用是否使抛出成为异常。如何处理它是的,递归意味着嵌套方法调用。太多的嵌套方法调用确实会引发
堆栈溢出
。您应该避免递归地打开多个连接。避免多个连接意味着我是否应该在不关闭连接的情况下打开sql connection ONCE并在整个操作中使用。这取决于您在该递归部分中具体执行的操作。这是您的调用,您可以选择是暂时占用所有递归调用的连接,还是在每个递归调用中打开/关闭连接更好。代码现在毫无例外地工作……我已经放置了thread.sleep(3000)在每次调用之后,我调用递归函数。
SqlConnection conn = new SqlConnection(DbConnection);
or
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
adpt.Fill(ds, "DataSet");
CloseConnection(cmd.Connection);