用MFC做一个登录界面,初学,请高手帮忙

gpc123456y 2012-08-21 08:43:29

我建了个基于对话框的MFC的工程,新添了一个CRecordset的派生类来连接数据源,做了一个登陆对话框,有“用户名”和“密码”两个编辑控件,还有一个“确认”按钮,数据库里有好多用户名和密码的数据,怎么用sql语言完成登陆功能??????那位大神指点一下,急急急!!!!
...全文
834 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
天门谣 2013-04-08
  • 打赏
  • 举报
回复
如何使用MFC编写一个小游戏的界面,比如马里奥???
秀小川 2012-08-26
  • 打赏
  • 举报
回复

try
{
_bstr_t sql = "select * from LogInfo where userName='"+LogDlg.m_Name+"' ";
pRecordset->Open(sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
if (pRecordset->GetadoEOF())
{
AfxMessageBox("没有可用账户");
return 0;
}
passwordInSql = pRecordset->GetCollect("password");
TypeInSql = pRecordset->GetCollect("levelType");
pRecordset->Close();
if ( (LogDlg.m_Password != (LPCTSTR)(_bstr_t)passwordInSql))
{
AfxMessageBox("用户名或密码错误!");
return FALSE;
}

我是使用ADO连接数据库的!
gpc123456y 2012-08-26
  • 打赏
  • 举报
回复
用ODBC连不行吗??
smilestone322 2012-08-25
  • 打赏
  • 举报
回复
首先你使用ADO连接数据库,然后连接数据成功后,就用你的用户名和密码到数据库的用户表中查询,查到了就可以验证登陆了。
gpc123456y 2012-08-22
  • 打赏
  • 举报
回复
Csutset m_set;
m_set.Open(AFX_DB_USE_DEFAULT_TYPE, "select * from 登陆 WHERE 用户名=110405101 AND 密码=123456");
UpdateData(FALSE);
m_aaa=m_set.m_column1;
m_bbb=m_set.m_column2;这个运行没问题
Csutset* m_set;
m_set->Open(AFX_DB_USE_DEFAULT_TYPE, "select * from 登陆 WHERE 用户名=110405101 AND 密码=123456");
UpdateData(FALSE);
m_aaa=m_set->m_column1;
m_bbb=m_set->m_column2;这个编译过了,但是运行不对
为什么指针就不行,问题就在指针上,请大神指教啊
傻X 2012-08-22
  • 打赏
  • 举报
回复
那你在他代码那里打个断点,F9,一行行执行,看看错误在哪里罗。
gpc123456y 2012-08-22
  • 打赏
  • 举报
回复
我数据库都连好了,只是仿照他那个写,
傻X 2012-08-22
  • 打赏
  • 举报
回复
3楼大牛贴的是界面代码。

直接仿写必定出错啊,界面代码又没花头的,主要还是ODBC数据库连接的问题呀。

这个一言难尽。首先保证你ODBC能否连接到数据库吧,不然其他都白搭
gpc123456y 2012-08-22
  • 打赏
  • 举报
回复
楼上,我仿照你那么写的,运行的时候程序出错,停止响应是怎么回事儿啊
Gloveing 2012-08-21
  • 打赏
  • 举报
回复
这是我的程序的一部分,可能数据库的表项会和你的不同,仅供参考
//登陆
void CODBC_View::OnLogIN()
{
UpdateData(TRUE);
int n=0;

m_pSet->MoveFirst();
do
{
if((m_pSet->m_column5==m_num)&&(m_pSet->m_column6==m_pass)) //信息都正确
{
n=1;
break;
}
else if((m_pSet->m_column5==m_num)&&(m_pSet->m_column6!=m_pass)) //存在用户,密码错误
{
n=2;
break; /* */
}
else
{
m_pSet->MoveNext(); //没有此用户
n=3;
}
}while(!m_pSet->IsEOF());
// MessageBox(m_pSet->m_column5);
// MessageBox(m_pSet->m_column6);

if(n==1) //信息都正确
{
MessageBox("成功登陆!","提示:",MB_OK);

Stuinfodlg.avgscore=m_pSet->m_column9;
Stuinfodlg.ch_score=m_pSet->m_column4;
Stuinfodlg.eng_score=m_pSet->m_column2;
Stuinfodlg.math_score=m_pSet->m_column3;
Stuinfodlg.name=m_pSet->m_column7;
Stuinfodlg.num=m_pSet->m_column5;
Stuinfodlg.pass=m_pSet->m_column6;
Stuinfodlg.pro=m_pSet->m_column8;
UpdateData(FALSE);
if(Stuinfodlg.DoModal()==(-1))
{
MessageBox("出错了!","ERROR!",MB_ICONSTOP|MB_OK);
}

}
if(n==2) //密码错误
{
MessageBox("密码错误!\n请确认密码!","提示:",MB_ICONSTOP|MB_OK);
//m_num="";
m_pass="";
UpdateData(FALSE);
}
else if(n==3) //没有此用户
{
MessageBox("没有此用户!\n请重新输入账户!","提示:",MB_ICONSTOP|MB_OK);
m_num="";
m_pass="";
UpdateData(FALSE); /* */
}

else if(n==0)
{
MessageBox("登陆错误!","提示:",MB_ICONSTOP|MB_OK);
}
UpdateData(FALSE);
}
gpc123456y 2012-08-21
  • 打赏
  • 举报
回复
我已经查过好多资料了,但还是不行啊,我用的ODBC连得数据库,有没有代码,给个示范参考一下
cure7946358 2012-08-21
  • 打赏
  • 举报
回复
google下就知道。用ado连接数据库。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧