那个哥们帮忙看看问题出在哪?

laoyuaning 2007-06-10 08:33:45
客户端文件调用组件的时候出现问题 提示程序出现错误中止 我问同学有的说是数据库调用问题 有的说是定义的IAccount *IAccount; 没有初始化 希望懂MFC和ATL组件编程的朋友帮忙看看 这个是自动取款机的设计代码 小弟在此表示感谢、代码入下 (有想帮忙的朋友加我好友,我把完整代码传给你,您帮我看看 我的 QQ :6169580)
客户端代码:
void CDlgLogin::OnOK()
{ UpdateData(TRUE);

HRESULT hr;
IAccount *IAccount; //指向接口的指针

// UpdateData(TRUE);

BSTR AccountID = A2BSTR(m_sAccount);
BSTR Pswd = A2BSTR(m_sPswd);

//hr = CoCreateInstance(CLSID_Account,NULL,CLSCTX_SERVER,IID_IAccount,(void**)&IAccount );
COSERVERINFO srvinfo={0,L"192.168.0.92",NULL,0};
MULTI_QI MultiQI = {&IID_IUnknown,NULL,NOERROR};
hr=CoCreateInstanceEx(CLSID_Account, NULL, CLSCTX_REMOTE_SERVER,
&srvinfo,1, &MultiQI);
if(hr!=0)
AfxMessageBox("COM组件创建失败!");
else
{
BOOL IsAccountValid = FALSE;

hr = IAccount->Login(AccountID,Pswd,&IsAccountValid); // call method
g_IsAccountValid = IsAccountValid;
g_AccountID = m_sAccount;
hr = IAccount->Release(); //释放接口
}

CDialog::OnOK();
}调试到
hr = IAccount->Login(AccountID,Pswd,&IsAccountValid); // call method
g_IsAccountValid = IsAccountValid;
g_AccountID = m_sAccount;
hr = IAccount->Release(); //释放接口
就不能运行了

组件部分代码 连接数据库部分
BOOL CAccount::ConnectDBSource(/*BSTR AccountID,BSTR Pswd*/)
{
//-------------连接数据源---------------
try
{
CoInitialize(NULL); // 初始化COM.
m_pConnection.CreateInstance(__uuidof(Connection)); //实例化_ConnectionPtr对象,并调用Open方法
m_pConnection->Open("DSN=BankAccount;", _bstr_t(""), _bstr_t(""),adModeUnknown );
if (NULL== m_pConnection)
{
MessageBox(NULL,_T("连接数据源出错!"),_T("ERROR"),MB_OK);
return FALSE;
}
else
return TRUE;
}
登陆部分:STDMETHODIMP CAccount::Login(BSTR AccountID, BSTR Pswd, BOOL *pIsValid)
{if(ConnectDBSource())
{
//---创建命令----------------------------------------
pCommand.CreateInstance (__uuidof (Command));
pCommand->ActiveConnection = m_pConnection;

_bstr_t strSQL ="Select * From Account Where AccountID Like '";
strSQL+=AccountID;
strSQL+="' And Password Like'";
strSQL+=Pswd;
strSQL+="'";
pCommand->CommandText = strSQL ; //拼写查询字串

pRecordset.CreateInstance (__uuidof (Recordset));
pRecordset->CursorLocation = adUseClient;
pRecordset->Open((IDispatch *) pCommand, vtMissing, adOpenStatic, adLockOptimistic, adCmdUnknown);
//----------------------
if(pRecordset->adoEOF) //若未找到则返回FALSE
*pIsValid = FALSE;
else //若找到则返回TRUE
*pIsValid = TRUE;
CoUninitialize(); //中止COM
}
return S_OK;

...全文
184 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyh12345 2007-06-21
  • 打赏
  • 举报
回复
IAccount没有CoCreateInstance

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧