Non credo proprio che l'errore sia per questo.
Comunque ti do un consiglio:
non esporre metodi per aprire e chiudere la connessione, esponi solo quelli per eseguire chiamate. Il DB lo gestisci all'interno.
codice:
protected DataTable ExecuteSelect(string sSQL, IDataParameter[] procParams)
{
SqlConnection cnx = null;
SqlCommand cmd = null;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
try
{
cmd = new SqlCommand(sSQL);
cmd.CommandType = CommandType.Text;
da.SelectCommand = cmd;
if (procParams != null)
{
for (int index = 0; index < procParams.Length; index++)
{
cmd.Parameters.Add(procParams[index]);
}
}
cnx = new SqlConnection(GetConnectionString());
cmd.Connection = cnx;
cnx.Open();
da.Fill(dt);
}
catch
{
throw;
}
finally
{
if (da != null) da.Dispose();
if (cmd != null) cmd.Dispose();
cnx.Dispose(); //Implicitly calls cnx.Close()
}
return dt;
}
Sarà .net a gestire e performare le connessione al db
Inoltre sono sono proprio sicuro che ti convenga fare una classe statica.