//构造函数,用于打开数据库;
public DataAccess()
{
//
//
MyConn=new OracleConnection(GetConnectionString());
if(MyConn.State==ConnectionState.Closed)
MyConn.Open();
}
//析构函数,用于关闭数据库;
~DataAccess()
{
if(MyConn.State==ConnectionState.Open)
{
MyConn=null;
MyConn.Close();
}
}现在有问题是在用户非正常关闭程序时(直接按窗体的(叉号)) 在析构函数中总报错!
MyConn 没有被实例化!(别告诉我再在析构函数里 new,希望要个比较实用的方法!)
public DataAccess()
{
//
//
MyConn=new OracleConnection(GetConnectionString());
if(MyConn.State==ConnectionState.Closed)
MyConn.Open();
}
//析构函数,用于关闭数据库;
~DataAccess()
{
if(MyConn.State==ConnectionState.Open)
{
MyConn=null;
MyConn.Close();
}
}现在有问题是在用户非正常关闭程序时(直接按窗体的(叉号)) 在析构函数中总报错!
MyConn 没有被实例化!(别告诉我再在析构函数里 new,希望要个比较实用的方法!)
{
if(MyConn.State==ConnectionState.Open)
{
MyConn=null;
MyConn.Close();
}
}
不管用,报一样的错!
{
if(MyConn.State==ConnectionState.Open)
{
MyConn=null;
MyConn.Close();
}
}
把这段代码放到FORM关闭事件里
你先把对象至为null了,它当然没法Close();
可是它同样报错!"Internal Pooler Error: 2"
注:我用的是oracle10g(应该没什么关系吧????)
c# 并不真正支持析构编程风格,不能预计它们会在什么时候运行,一般情况下不鼓劢使用它们。
---摘自C#高级编程
希望楼主问题要谦虚,态度要温和!
sorry! 我对自己的话道歉!
谢谢了!
MyConn.Close自然保证出错