不能再打开其它表了。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 不能再打开其它表了。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[OleDbException (0x80004005): 不能再打开其它表了。]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +267
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +192
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +48
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +106
   System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) +111
   System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +4
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +141
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +137
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
   DAL.DBHelper.GetDataSet(String safeSql) in C:\Documents and Settings\Administrator\桌面\201006-2\qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\ddddddddddddddddddd\2010-05-20-01\2010-05-20\bascial\DAL\DBHelper.cs:99
   DAL.NewsService.GetListNewsBySql(String safeSql) in C:\Documents and Settings\Administrator\桌面\201006-2\qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\ddddddddddddddddddd\2010-05-20-01\2010-05-20\bascial\DAL\NewsService.cs:113
   DAL.NewsService.GetListNewsByNum(Int32 num, Int32 type) in C:\Documents and Settings\Administrator\桌面\201006-2\qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\ddddddddddddddddddd\2010-05-20-01\2010-05-20\bascial\DAL\NewsService.cs:93
   BLL.NewsManager.GetListNewsByNum(Int32 num, Int32 type) in C:\Documents and Settings\Administrator\桌面\201006-2\qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\ddddddddddddddddddd\2010-05-20-01\2010-05-20\bascial\BLL\NewsManager.cs:44
   _Default.Page_Load(Object sender, EventArgs e) +26
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 

解决方案 »

  1.   

    可能是一些资源没有释放,比如Connection,SQL游标等?
    也可能是你的某些代码执行的时间太长或次数比较多了,或以某些表之间出现了死锁
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;namespace DAL
    {
        public static class DBHelper
        {
            private static OleDbConnection connection;
            /// <summary>
            /// 取得数据库连接
            /// </summary>
            public static OleDbConnection Connection
            {
                get
                {
                    string connectionString = ConfigurationManager.ConnectionStrings["JiDiweb"].ConnectionString;
                    if (connection == null)
                    {
                        connection = new OleDbConnection(connectionString);
                        connection.Open();
                    }
                    else if (connection.State == System.Data.ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    else if (connection.State == System.Data.ConnectionState.Broken)
                    {
                        connection.Close();
                        connection.Open();
                    }
                    return connection;
                }
            }
            public static void CloseDB()
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }        public static int ExecuteCommand(string sql, params OleDbParameter[] values)
            {            OleDbCommand cmd = new OleDbCommand(sql, Connection);
                cmd.Parameters.AddRange(values);
                return cmd.ExecuteNonQuery();
            }        /// <summary>
            /// 执行并返回影响行数
            /// </summary>
            /// <param name="safeSql"></param>
            /// <returns></returns>
            public static int ExecuteCommand(string safeSql)
            {
                OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
                return cmd.ExecuteNonQuery();
            }
            /// <summary>
            /// 执行并返回执行结果中的第一列
            /// </summary>
            /// <param name="safeSql"></param>
            /// <returns></returns>
            public static int GetScalar(string safeSql)
            {
                OleDbCommand cmd = new OleDbCommand(safeSql, Connection);;
                return Convert.ToInt32(cmd.ExecuteScalar());
            }        public static OleDbDataReader GetReader(string safeSql)
            {
                OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
                OleDbDataReader reader = cmd.ExecuteReader();
                return reader;
            }        /// <summary>
            /// 根据sql语句获得sqldatareader
            /// </summary>
            /// <returns></returns>
            public static OleDbDataReader GetReader(string sql, params OleDbParameter[] values)
            {
                OleDbCommand cmd = new OleDbCommand(sql, Connection);
                cmd.Parameters.AddRange(values);
                OleDbDataReader reader = cmd.ExecuteReader();
                return reader;
            }        public static DataTable GetDataSet(string safeSql)
            {
                DataSet ds = new DataSet();
                OleDbCommand cmd = new OleDbCommand(safeSql, Connection);
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                da.Fill(ds);
                return ds.Tables[0];
            }
            public static DataTable GetDataSet(string sql, params OleDbParameter[] values)
            {
                DataSet ds = new DataSet();
                OleDbCommand cmd = new OleDbCommand(sql, Connection);
                cmd.Parameters.AddRange(values);
                new OleDbDataAdapter(cmd).Fill(ds);
                return ds.Tables[0];
            } 
        }
    }这是我的DBhelper类。请问怎么释放CONNECTON 怎么关闭啊