首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC2008上连接数据库出错

2013-01-26 
VC2008下连接数据库出错点忽略后程序正常运行并显示了我想要的结果,但接下来又是各种中断提示,这是什么神

VC2008下连接数据库出错


点忽略后程序正常运行并显示了我想要的结果,但接下来又是各种中断提示,这是什么神马情况???
还有在VC6.0中在stafx.h中添加如下代码运行正常
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace  
rename("EOF", "adoEOF")

而到了VC2008中,非得改成如下形式才能编译成功
#import "c:\program files\common files\system\ado\msado15.dll" named_guids rename_namespace("ADOCG") rename("EOF", "EndOfFile") rename("BOF","FirstOfFile")
using namespace ADOCG;

这又是什么神马情况???
[解决办法]
CoInitialize函数接收一个参数,而该参数通常是一个0,这是它起源OLE的一个惯例。CoInitialize函数初始化COM库。在你做其它的处理之前,你需要调用这个函数。在更为专业的应用中,我们将会使用扩展的版本--CoInitializeEx。你要使用ADO,要先初始化环境,使用完毕再用CoUninitialize(   );OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作.



[解决办法]
/ /特殊情况下,DLL假设调用应用程序初始化OLE。 
//对于DLL没有特殊情况下,这些DLL需要初始化OLE通过oleInitialise
//  上述被完成由于MFC不能提供自动取消DLL,因为OLE在DLL_PROCESS_DETACH情况下,关闭它是无效的
// Special case DLL context to assume that the calling app initializes OLE.   
// For DLLs where this is not the case, those DLLs will need to initialize 
// OLE for themselves via OleInitialize.  
//This is done since MFC cannot provide    
automatic uninitialize for DLLs because it is not valid to shutdown OLE  
during a DLL_PROCESS_DETACH.

热点排行