关于 CreateInstance(_uuidof(Connection)) 创建失败的有关问题

关于 CreateInstance(_uuidof(Connection)) 创建失败的问题
是在MFC下写的程序
1,已经加引入
#import "msado15.dll" no_namespace rename ("EOF","adoEOF")

2,在CNGWebUIServerApp::InitInstance()加
AfxOleInit();


我是将连接数据库的操作写成一个类的方法,如果是在CNGWebUIServerDlg类调用该方法就没有问题。
如果在其他类调用的话,就会
CreateInstance(_uuidof(Connection)) 创建失败,老是找不出为什么,知道的大虾帮下忙啊。谢了

------解决方案--------------------
资源还没有释放掉。
一开始时就调用了CreateInstance(_uuidof(Connection)) ,你没有释放掉,再创建时它还存在,所以出错。
AfxOleInit(); 最好要在你写的那个类时就要初始化COM的了。
用完的话就立刻释放,以便第而次调用。
CoUninitialize();

最好就用智能指针写一个类
这是我初始化和释放的函数
_ConnectionPtr m_pConnection;//指向Connection对象的指针

_RecordsetPtr m_pRecordset;//....Recordset........

void CAccessConn::OnInitAccessConn()
{
CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db11.mdb";

m_pConnection->Open("","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}

void CAccessConn::CutConn()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
CoUninitialize();
}
------解决方案--------------------
>>这种方法写了一下,发现那个问题还是存在。 
>>程序进入m_pConnection.CreateInstance("ADODB.Connection")后,单步调试 


>>Interface* m_pInterface; 

// Releases only if the interface is not null. 
// The interface is not set to NULL. 
// 
void _Release() throw() 

if (m_pInterface != NULL) { //就在这出错了 
m_pInterface->Release(); 


>>错误提示是Unhandled exception in : 0xC0000005 :Access Violation;

程序关闭时要关闭连接:
比如你可以在
int CUmsApp::ExitInstance() 
{
// TODO: Add your specialized code here and/or call the base class

//
if ( pConn->State )

{
pConn->Close();
pConn = NULL;
}

return CWinApp::ExitInstance();
}



------解决方案--------------------
首先你自己看下错误码。另外,你看看两个地方调用的是否同一个线程。
主要看下出错的地方是否没有初始化com
------解决方案--------------------
应该是你原来的连接没有关掉吧
------解决方案--------------------
创建ADO对象要调用
CoInitialize
而不是AfxOleInit
------解决方案--------------------
用在多线程里?
------解决方案--------------------
每个线程都要初始化com环境