比如我在一个叫 aa 的数据库里有个叫bb 的表
表里有 name 和 pass 两个字段。。
现在输入一个 用户名 和 密码。。
如何用程序实现该 用户 是否有。
和他的密码是不是对的
麻纺了  
  
给个具体完整的例子。

解决方案 »

  1.   

    写个函数吧,大概是这样rs->Open("select [name],[pass] from bb where [name]='用户1'",...);
    if rs->RecordCount()<=0
    {
       //用户不存在
       Return flase;
    }
    else

       if 输入的密码==rs("pass")
       {
            //登陆成功
            Reutrn ture;
       }
       else
       {
            //密码错误
            Return flase;
       }  
    }
      

  2.   

    void CDemo01Dlg::OnOK() 
    {
    // TODO: Add extra validation here
    UpdateData(TRUE);
    CUserRecordSet m_userRecordSet;
    try
    {
    if(m_userRecordSet.IsOpen())//判断pUser记录集是否打开,如果打开则关闭,以保证后面的操作正确执行
    m_userRecordSet.Close();
    m_userRecordSet.m_strFilter.Format("UserName = '%s' and UserPwd = '%s'",
    m_strUserName,m_strUserPwd);
    m_userRecordSet.Open(CRecordset::snapshot,NULL,CRecordset::none);//执行查询操作
    //判断符合条件的记录集是否为空,如果为空表明用户名或者密码不正确,给出相应的警告。
    //如果不为空,表明用户名和密码正确,给出相应的提示
    if(m_userRecordSet.IsEOF())
    {
    m_userRecordSet.Close();
    AfxMessageBox("密码错误,请重试!");
    return;
    }
    else
    {
    m_userRecordSet.Close();//操作完成后关闭数据库
    AfxMessageBox("密码正确,登录成功!");
    }
    }
    catch(CDBException *e)
    {
    e->ReportError();//将错误报告到界面上
    //e->Delete();//将错误删除
    return;
    }

    CDialog::OnOK();
    }
      

  3.   

    如果是一口气判断就是:
    rs->Open("select * from tablename where name='username' and pass='password'",...);
    if (rs->BOF)
    {
     AfxMessageBox("无此用户或密码错误");
    }
    如果要分开来判断就是:
    rs->Open("select * from tablename where name='username'",...);
    if (rs->BOF)
    {
     AfxMessageBox("无此用户");
    }
    else
    {
    CString temp;
    _variant_t var;
    var=rs->GetCollect("pass");
    temp=(LPCSTR)_bstr_t(var);
    if (temp!=password)
    {
     AfxMessageBox("你输入的密码有误");
    }
    }
      

  4.   

    TO : DebugXP() ( ) 信誉:117 你的这个句:if 输入的密码==rs("pass")
    问问如果有两个人名字一样 那得到的 pass 因该是两个
    你的 rs("pass") 是返那一个呢。。还问问:
    恩:
    rs->Open("select [name] from bb where id = 1",...);
    id 唯一:怎么得到 这个name 并 复给 CString aa;
    是不是 aa = rs.******
      

  5.   

    其实是问:rs->Open("select min(id) from bb ",...);怎么得到结果并副给 int a;
      

  6.   

    名字重复的话就把编号也加上,编号应该是唯一的。
    ————————————————————————————————
    rs->Open("select [name] from bb where id = 1",...);_variant_t var;
    CString aa;
    var=rs->GetCollect("name");
    aa=var.bstrVal;
    ————————————————————————————————
    rs->Open("select min(id) as minID from bb where id = 1",...);_variant_t var;
    int aa;
    var=rs->GetCollect("minID");
    aa=var.intVal;
      

  7.   

    UP
     DebugXP() ( ) 信誉:117