CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

小问题》》》》》》》》》》》》》》》》》》》》》

楼主houmingyang(Hummer)2004-11-02 13:57:22 在 VC/MFC / 数据库 提问

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

1 楼houmingyang(Hummer)回复于 2004-11-02 14:10:08 得分 0

顶顶Top

2 楼DebugXP(NULL)回复于 2004-11-02 14:16:03 得分 10

写个函数吧,大概是这样  
   
  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;  
        }      
  }Top

3 楼mengqimxz(雨)回复于 2004-11-02 14:19:51 得分 20

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();  
  }Top

4 楼zxhcloth(hima)回复于 2004-11-02 14:30:28 得分 20

如果是一口气判断就是:  
  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("你输入的密码有误");  
  }  
  }Top

5 楼houmingyang(Hummer)回复于 2004-11-02 14:33:48 得分 0

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

6 楼houmingyang(Hummer)回复于 2004-11-02 14:36:06 得分 0

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

7 楼houmingyang(Hummer)回复于 2004-11-02 14:36:49 得分 0

谢谢了   各位再看看Top

8 楼DebugXP(NULL)回复于 2004-11-02 14:46:50 得分 20

名字重复的话就把编号也加上,编号应该是唯一的。  
  ————————————————————————————————  
  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;Top

9 楼Chiyer(星羽)回复于 2004-11-03 16:33:31 得分 0

UP  
    DebugXP()   (   )   信誉:117Top

10 楼Chiyer(星羽)回复于 2004-11-03 16:33:59 得分 30

上面的回答说的很清楚了哦Top

相关问题

  • 小小小小小问题!
  • 一个小小小小小小问题
  • 小小,小问题
  • 小小小小问题
  • 小小问题!
  • 小小问题?
  • 小小问题。
  • 小小问题!!!!
  • 小小API
  • 小小问题:)

关键词

  • 密码
  • 用户
  • rs
  • getcollect
  • aa
  • afxmessagebox
  • 输入
  • pass
  • variant
  • cstring

得分解答快速导航

  • 帖主:houmingyang
  • DebugXP
  • mengqimxz
  • zxhcloth
  • DebugXP
  • Chiyer

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo