错误内容如下,只要某页面一旦出现该错误之后网站中所有含有数据库页面全部都会报以下的错误~~,但是过一段时间之后网站就自己恢复了~~请教一下这是什么问题??
未指定的错误 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[OleDbException (0x80004005): 未指定的错误]
   System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20
   System.Data.OleDb.OleDbConnection.InitializeProvider() +57
   System.Data.OleDb.OleDbConnection.Open() +203
   ConnectionOleDbDatabase.ConnectDatabase.ConnectDb(String strQuery, OleDbConnection myConn) +67
   Pages.Indexs.StatEveryCityAdvNumber.GetThisHouseAdvLength(String City) +81
   Pages.Indexs.StatEveryCityAdvNumber.Beginning() +425
   Pages.Indexs.StatEveryCityAdvNumber.Page_Load(Object sender, EventArgs e) +5
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +750 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.2032; ASP.NET 版本:1.1.4322.2032

解决方案 »

  1.   

    有没有每个页面都用到的数据库访问函数?
    是OleDbException,应该能用try catch捕获到的。
      

  2.   

    你在程序中有DataReader没有关闭
      

  3.   

    DataReader以独占的方式打开数据库,如果你没有关闭,在有别的连接时候就会出错,但是过一段时间系统会自动回收这个连接,所以又可以使用拉。
      

  4.   

    to zhanqiangz(闲云野鹤):
       我是把数据库连接做成一个类,需要的时候才连接
       这个异常用try catch捕获不到~~~to dattotzy(什么叫做酷?三年一条牛仔裤!) 
       应该都是关闭了的~~!!
    刚刚发现一个解决方法~~就是每当出现该错误的时候将IIS连接池清空后,问题就自然解决了~~
      

  5.   

    连接字串的代码
    "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = {数据库地址}"using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;namespace Leg.Data
    {
        public class ConnectDatabase
        {
    private string OleDbConnectionString;
    private string MDBpath;
    public ConnectDatabase()
    {
        OleDbConnectionString = ConfigurationSettings.AppSettings["OleDbConnectionString"];
    MDBpath = ConfigurationSettings.AppSettings["MDBpath"];
    }
    public OleDbConnection CreateConnection()
    {
    OleDbConnection cn;
        cn = new OleDbConnection(OleDbConnectionString);
    return cn;
    }
    public OleDbDataReader ExecuteReader(string strQuery,OleDbConnection myConn)
    {
    OleDbCommand Conn;
    Conn = new OleDbCommand(strQuery,myConn);
    Conn.Connection.Open(); OleDbDataReader DvConn = Conn.ExecuteReader();
    return DvConn;
    }
    public int ExecuteNonQuery(string strQuery,OleDbConnection myConn)
    {
    OleDbCommand Conn;
        Conn = new OleDbCommand(strQuery,myConn);
    Conn.Connection.Open(); int DataCount = Conn.ExecuteNonQuery();
    return DataCount;
    }
        };
    }
      

  6.   

    Conn.Connection.Open();
    ===================
    close呢?
      

  7.   

    OleDbConnection没有在这里关闭是因为,如果在这里关闭了Connection那么DataReader的Read()就会发生错误
    因此,close是在这个类的外部,也就是调用这个类中的CreateConnection()方法后获取到OleDbConnection对象的外部句柄来关闭的!
      

  8.   

    应该是datareader嵌套打开得问题
      

  9.   

    可以说明白一天吗?DataReader这种打开会出现错误吗?
      

  10.   

    在每一个方法的return之前都必须关闭连接conn.Close();
      

  11.   

    to hlbasic
    那就是说,OleDbConnection 对象都不能用方法来返回了是吧??
      

  12.   

    用try catch finally在finally后加入conn.close这样无论如何,这个段结束后,都要关闭了
      

  13.   

    to xxuu503
    这个异常用try捕获不了。
      

  14.   

    不是说你异常!finally在区块执行完毕后,不论是否出错,是否已经return,都会执行的所以在finally后加入conn.close就可以把打开的oledbconnection关闭
      

  15.   

    楼上的意思就是:
    try{
      conn = getConn(....);//获得联结
      conn.ExecQu.....(...);//使用联结
    }
    catch( ..)
    {
    ..//处理联结
    }
    finally
    {
       conn.close();
    }
      

  16.   

    我想问一下,上面的代码加在什么地方?
    如果是加在那个类的内部,这样使用之后,DataReader的Read()就不能工作了
    如果是加在类的外部,就是引用这个类的程序段,那所有实例化了的OleDbConnection的句柄我都是关闭了的,我刚刚检查了一遍~~~~~这个错误,他并不是一定会发生,而是随即型的产生这个错误。。
      

  17.   

    我估计应该不会是Conn没有关闭的原因了,
    因为我堆笺中出错的方法里所有使用ConnectDatabase对象打开的OleDbConnection
    全部换成了OleDbConnection cn = new OleDbConnection(ConnectionString);的方式
    并且检查过了所有的Conn都是关闭了的,但多刷新几次后,仍然会报那个错误