为什么我同样的登陆语句 用单文档能够执行,而用对话框不能执行?连接的ACCESS数据库,单文档加了ODBC数据源 源码如下:
UpdateData ();
m_strName.TrimRight ();
m_strPsw.TrimRight ();
_ConnectionPtr  pConnection;
_RecordsetPtr  pRecordset,pRecordset2;
CString strSql;
strSql="SELECT * FROM admin WHERE id='"+m_strName+"' AND password='"+m_strPsw+"'";
try
{
if (!pConnection.CreateInstance(__uuidof(Connection)))
pConnection->Open("Provider=Microsoft.JET.OLEDB.4.0;Data Source=iss.mdb","","",adModeUnknown);
} catch (_com_error e)
{
CString errormessage;
errormessage.Format ("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage ());
AfxMessageBox (errormessage);
return ;
}
try
{
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset2.CreateInstance(__uuidof(Recordset));

pRecordset->Open (_variant_t(strSql),_variant_t((IDispatch*)pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
if (pRecordset->adoEOF)
{
MessageBox ("用户名或密码错误!","",MB_ICONERROR);
return;
}
pRecordset->Close ();
m_bLogin=TRUE;
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format ("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage ());
AfxMessageBox (errormessage);
return ;
}
pConnection->Close();
CDialog::OnOK();急 谢谢帮助下

解决方案 »

  1.   

    UpdateData(true);   ////你的这个怎么()里面没东西?没有就变量没传递值
    ///////////////////////////////////////
    _ConnectionPtr  pConnection;
    _RecordsetPtr  pRecordset,pRecordset2;
    CString strSql;
    strSql="SELECT * FROM admin WHERE id='"+m_strName+"' AND password='"+m_strPwd+"'";
    AfxMessageBox(strSql);
    try
    {
    if (!pConnection.CreateInstance(__uuidof(Connection)))
    pConnection->Open("Provider=Microsoft.JET.OLEDB.4.0;Data Source=iss.mdb","","",adModeUnknown);
    } catch (_com_error e)
    {
    CString errormessage;
    errormessage.Format ("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage ());
    AfxMessageBox (errormessage);
    return ;
    }
    try
    {
    pRecordset.CreateInstance(__uuidof(Recordset));
    pRecordset2.CreateInstance(__uuidof(Recordset));

    pRecordset->Open (_variant_t(strSql),_variant_t((IDispatch*)pConnection,true),
    adOpenStatic,adLockOptimistic,adCmdText);
    if (pRecordset->adoEOF)
    {
    MessageBox ("用户名或密码错误!","",MB_ICONERROR);
    return;
    }
    pRecordset->Close ();
    AfxMessageBox("OK");
    //m_bLogin=TRUE;
    }
    catch (_com_error e)
    {
    CString errormessage;
    errormessage.Format ("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage ());
    AfxMessageBox (errormessage);
    return ;
    }
    pConnection->Close();
      

  2.   

    是不是忘了调用 ::CoInitialize(NULL);
      

  3.   

    少了com初始化的代码吧?