对,这个类就是专门处理与数据库的连接与读写数据的。
问题应该是出在这个类的初始化过程中就要出错,其它类调用这个类的方法如下:
如Stock.cs类调用:
using System;
using System.Data;
using System.Data.OleDb;
using PTERP.Business.DataAccess;
using Microsoft.Web.UI.WebControls;namespace PTERP.Business.Stock
{
public class Stock:MarshalByRefObject
{
protected PTERP.Business.DataAccess.DbSqlRun objDbSqlRun;
public Stock()
{
objDbSqlRun=new DbSqlRun(); //================>初始化调用DataAccess.cs类,然后在DataAccess.cs类报错,出错的行在protected virtual void Dispose(bool Disposing)函数体内最后一行。
}
....
}
}
问题应该是出在这个类的初始化过程中就要出错,其它类调用这个类的方法如下:
如Stock.cs类调用:
using System;
using System.Data;
using System.Data.OleDb;
using PTERP.Business.DataAccess;
using Microsoft.Web.UI.WebControls;namespace PTERP.Business.Stock
{
public class Stock:MarshalByRefObject
{
protected PTERP.Business.DataAccess.DbSqlRun objDbSqlRun;
public Stock()
{
objDbSqlRun=new DbSqlRun(); //================>初始化调用DataAccess.cs类,然后在DataAccess.cs类报错,出错的行在protected virtual void Dispose(bool Disposing)函数体内最后一行。
}
....
}
}
另外,我觉得写C#不用象C++那样讲究垃圾处理和销毁什么的,
=======================================================
[DataBase]
data source=172.16.36.222
user id=sa
catalog=RemoteEdu
password=1234567890
using System;
using System.Data;
using System.Data.OleDb;
using Wonder.SysConsole.User ;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//using Microsoft.Web.UI.WebControls;namespace Wonder.Edu
{
public class Stock:MarshalByRefObject
{
protected DbSqlRun objDbSqlRun;
public Stock()
{
objDbSqlRun=new DbSqlRun(); //================>初始化调用DataAccess.cs类,然后在DataAccess.cs类报错,出错的行在protected virtual void Dispose(bool Disposing)函数体内最后一行。
}
//....
}
}namespace Wonder.Edu
{
/// <summary>
/// testdb 的摘要说明。
/// </summary>
public class testdb : System.Web.UI.Page
{
private Stock t = new Stock();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
public class Stock:MarshalByRefObject
{
protected PTERP.Business.DataAccess.DbSqlRun objDbSqlRun;
protected PTERP.Business.Common.Common objCommon;
protected PTERP.Business.Buy.Buy objBuy;
public Stock()
{
objDbSqlRun=new DbSqlRun();
objCommon=new PTERP.Business.Common.Common();
objBuy=new PTERP.Business.Buy.Buy();
}
//--------------------------------------------------------------------------
public void Dispose()
{
objDbSqlRun.Dispose();
GC.SuppressFinalize(this);
}
//--------------------------------------------------------------------------------------运行正常的写法如下:
public class Stock:MarshalByRefObject
{
protected PTERP.Business.DataAccess.DbSqlRun objDbSqlRun;
public Stock()
{
objDbSqlRun=new DbSqlRun();
}
//--------------------------------------------------------------------------
public void Dispose()
{
objDbSqlRun.Dispose();
GC.SuppressFinalize(this);
}
//--------------------------------------------------------------------------------------把对Common和Buy类的调用对象objCommon和objBuy都写在各个方法内部,这样改写后就可以运行了,不知道问题是不是这个?