菜鸟问题——我生成cdaorecordset为什么没有析构函数? 我对C++不熟悉,搞一个数据库项目,我知道当用完一个连接时,要退出连接;但提示内存操作错误;Database::~Database(){ db.Close(); Database::Close();}请问在析构函数里怎样关闭连接呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要在析构函数里关闭数据库,另外写一个Close(), Disconnect()函数,这样和Connect(),Open()函数配套使用,这才是写数据库程序的良好习惯,逻辑也不会太乱。 还有一个原因是,数据库连接经常是全局的,要是在析构函数里关闭连接就晚了,当然在析构函数也可以做一个检测,如果没有关闭数据库则强制关闭。你的析构可能应该这样写:Database::~Database(){ if(m_ptrConn) { Close(); m_ptrConn=NULL; }}m_ptrConn=是你的数据库对象的指针或者一个BOOL开关。 还有一点问题:)请问 shines(Othelloing): 你所说的“全局”是不是指,只要我不关闭它,那么它就一直在内存中可以被其他类调用呢? 我不知道你用的是DAO,还是ADO,如果是ADO,一般是只Close(),不Disconnect(),其实只是保留了Connect()时的数据库连接对象的指针,如果真正要推出程序的时候才Disconnect(),释放连接。初始化Ole的时候最好使用:CoInitialize(NULL);和 CoUninitialize();建议不选择使用AfxOleInit();初始化Ole 如何让WTL文件读取 求思路:用C/C++实现虚拟网卡的功能 vc 子类调用基类 [高分紧急求助] 如何获取远程web服务器文件的大小? 求救!如何在后台取得TOP窗口所打开的文件路径 ? 请高手帮忙,翻译一下这段话啊!! 简易图书资料管理系统的设计与实现(大家帮帮忙啊!) 字符串问题,撒分 如何实现象UNIX下的信号量的功能? 什么情况下对象要new出来 3dsMax文件格式资料索取? 在对excel德编程中遇到的两个小问题
另外写一个Close(), Disconnect()函数,这样和Connect(),Open()函数配套使用,这才是写数据库程序的良好习惯,逻辑也不会太乱。
Database::~Database()
{
if(m_ptrConn)
{
Close();
m_ptrConn=NULL;
}
}m_ptrConn=是你的数据库对象的指针或者一个BOOL开关。
你所说的“全局”是不是指,只要我不关闭它,那么它就一直在内存中可以被其他类调用呢?
CoInitialize(NULL);
和 CoUninitialize();建议不选择使用AfxOleInit();初始化Ole