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.