如题
各位大哥
小弟做了登陆
代码如下
CString userName;
CString userPass;
CEdit* loginName = (CEdit*)GetDlgItem(IDC_EDIT1);
CEdit* loginPass = (CEdit*)GetDlgItem(IDC_EDIT2); loginName->GetWindowText(userName);
loginPass->GetWindowText(userPass); BaseRecordset pRs;
CString sql="Select userName,userPassword from UserList where userName = '" + userName + "' And userPassword = '" + userPass + "'  And userType='管理员'";
AfxMessageBox(sql);
if( pRs.Open((_bstr_t)sql, adCmdText) )
{ if( !pRs.IsEmpty() )
{
m_userNameStr=pRs.GetFieldValue(0);
m_userPassStr=pRs.GetFieldValue(1);
m_clew.ShowWindow(FALSE);
ShowWindow(FALSE);
if (m_userNameStr!="" || m_userPassStr!="")
{
AfxMessageBox("11111111");
m_state=1;
CDialog::OnOK();
CString m_state1;
m_state1.Format(_T("%d"),m_state);
}
else//输入错误到不了这里
{
AfxMessageBox("1111111122222");
m_userNameStr = "";
m_clew.ShowWindow(TRUE);

}
}

解决方案 »

  1.   

    if (m_userNameStr!="" || m_userPassStr!="") 
    这个判断有问题。
    应该是
    if (m_userNameStr!="" && m_userPassStr!="") 
      

  2.   

    ||或.....顾名思义或者...XX或者XX只要一边为真整个就为真
    &&与..................XX与XX只要当两边都为真整个才为真
      

  3.   

    晕,刚才看了一下你的代码。输出错误的时候,根本在数据库中找不到数据。也就是说
    if( !pRs.IsEmpty() ) // 这句不成立,所以这个if语句都不可能进入了。
      

  4.   

    是进不去if( !pRs.IsEmpty() )
    我应该怎么修改
    我试了一下 if( !pRs.End() )
    不行
      

  5.   

    if (m_userNameStr!="" && m_userPassStr!="")
    这个判断写的不对
    我应该怎么写这个判断呢
    我点了一下如果输入正确还是能进去的
    如果输入错误就进不去了
      

  6.   


    lz看来代码不是你写的,或者你是拷贝过来的。
    你可以这样写。
    if( !pRs.IsEmpty() ) // 数据库中有数据,执行下面这些

    m_userNameStr=pRs.GetFieldValue(0); 
    m_userPassStr=pRs.GetFieldValue(1); 
    m_clew.ShowWindow(FALSE); 
    ShowWindow(FALSE); 
    if (m_userNameStr!="" && m_userPassStr!="") 

    AfxMessageBox("11111111"); 
    m_state=1; 
    CDialog::OnOK(); 
    CString m_state1; 
    m_state1.Format(_T("%d"),m_state); 

    else//输入错误到不了这里 

    AfxMessageBox("1111111122222"); 
    m_userNameStr = ""; 
    m_clew.ShowWindow(TRUE); }
    else
    {
        // 数据库中没数据,证明输入的用户名或者密码错误
        AfxMessageBox("您输入的用户名或者密码错误"); 

      

  7.   


    AfxMessageBox("您输入的用户名或者密码错误"); 
    没有输出这句?
      

  8.   

    如果什么都没打
    没有输出这一句
    你能吧你QQ告诉我吗?
    我们QQ说
    谢谢了
      

  9.   

    如果你输入错误的话(即在数据库中根本不存在该用户,或密码是错的),换句话讲,你执行那个SQL语句根本得到的那个Recordset是空的。根据你的代码if( !pRs.IsEmpty() ) 这句话是不满足的,当然就不能进入if体啦。也就到不了你那地方。所以我觉得if( !pRs.IsEmpty() ) 这句话其实就能说明你输入的信息是不是正确的。如果你的用户不存在,或者是错误的。那么这句话是不执行的。可以改为
    if( pRs.IsEmpty() ) 
    {
      MessageBox("input wrong imformation!");
    }
    关于判断是否为空的,可以在前面判断
    loginName->GetWindowText(userName); 
    loginPass->GetWindowText(userPass); 
    if(loginName==""||loginPass=="")
    {
       MessageBox("input incompleted information");
    }
    不用放到下面的数据库那块判断,楼主可以试一下