我的登陆消息出错,请各位帮忙!  
debug  assertion  filed!  
Program:D:\Poject\PlaneManager\Debug  PlaneManager.exe  
file:  dbcore.cpp  
line;  956  
 
for  information  on  how  your  program  can  cause  an  assertion  failure,see  the  vc++  doucumentation  on  assertion  
点击忽略之后出现:  
file  afxdb.inl  
下面是我的函数:  
void  Login::OnOK()    
{  
           //  TODO:  Add  extra  validation  here  
           int  count=0;  
           LoginSet*  m_Pset=new  LoginSet(m_Database);  
           if(!m_Database->IsOpen())  
                       if(!m_Database->Open(_T("user")))  
                       {  
                                   MessageBox("不能打开数据库!");  
                                   m_Database->Close();  
                       }  
           UpdateData(true);  
           CString  strSQL;  
           strSQL.Format("select  *  from  user  where  username='%s'  and  password='%s'",m_UserName,m_PassWord);  
//            if(m_Pset->IsOpen())  
//            m_Pset->Update();  
//            m_Pset->m_strFilter="username=m_UserName  and  password=m_PassWord";  
           m_Pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);  
//    m_Pset->Requery();  
           m_Pset->AssertValid();  
           if(m_Pset->GetRecordCount()==0)  
           {    
                       if(count<3)  
                       {  
                                   MessageBox("用户名和密码错误!");  
                                   count++;  
                       }  
                       else  
                       {  
                                   MessageBox("错误超过三次!");  
                                   m_Database->Close();  
                                   CDialog::OnOK();  
                       }  
           }  
           else  
                       m_Database->Close();              
           CDialog::OnOK();  
}  
 
 贴子加分 | 转移到  
 

解决方案 »

  1.   

    你没有delete!记住new了后一定要delete
    m_Pset
      

  2.   

    编译阶段,编译器不能检查你的指针是否有效,所以就算指针处理不好编译能通过,但运行的时候容易出现CASH!!!
      

  3.   

    晕,可以用查询语句把密码调出来,然后用CString的CompareNoCase判断
      

  4.   

    多谢各位
    m_Set.m_strFilter="username=m_Username and password=m_PassWord";
    m_Set.Requery(); 
    其中m_Username 和 m_PassWord是控件变量,我应该怎么写呢?
      

  5.   

    m_Set.m_strFilter=" username='" + m_Username + "' and password= '" + m_PassWord + "'";