错误内容如下,只要某页面一旦出现该错误之后网站中所有含有数据库页面全部都会报以下的错误~~,但是过一段时间之后网站就自己恢复了~~请教一下这是什么问题??
未指定的错误
说明: 执行当前 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
未指定的错误
说明: 执行当前 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
是OleDbException,应该能用try catch捕获到的。
我是把数据库连接做成一个类,需要的时候才连接
这个异常用try catch捕获不到~~~to dattotzy(什么叫做酷?三年一条牛仔裤!)
应该都是关闭了的~~!!
刚刚发现一个解决方法~~就是每当出现该错误的时候将IIS连接池清空后,问题就自然解决了~~
"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;
}
};
}
===================
close呢?
因此,close是在这个类的外部,也就是调用这个类中的CreateConnection()方法后获取到OleDbConnection对象的外部句柄来关闭的!
那就是说,OleDbConnection 对象都不能用方法来返回了是吧??
这个异常用try捕获不了。
try{
conn = getConn(....);//获得联结
conn.ExecQu.....(...);//使用联结
}
catch( ..)
{
..//处理联结
}
finally
{
conn.close();
}
如果是加在那个类的内部,这样使用之后,DataReader的Read()就不能工作了
如果是加在类的外部,就是引用这个类的程序段,那所有实例化了的OleDbConnection的句柄我都是关闭了的,我刚刚检查了一遍~~~~~这个错误,他并不是一定会发生,而是随即型的产生这个错误。。
因为我堆笺中出错的方法里所有使用ConnectDatabase对象打开的OleDbConnection
全部换成了OleDbConnection cn = new OleDbConnection(ConnectionString);的方式
并且检查过了所有的Conn都是关闭了的,但多刷新几次后,仍然会报那个错误